我正在运行相同的代码;下面的代码可以在Windows下运行,但是可以在Ubuntu(16.04)上正常运行。在import websocket
import json
class WhatEver(object):
def __init__(self):
self.ws = websocket.WebSocketApp(
'wss://beijing.51nebula.com/',
on_message=self.on_ws_message,
on_open=self.on_open
)
def rin_forever(self):
print("start run forever")
self.ws.run_forever()
def on_ws_message(self, ws,message):
print (message)
self.ws.close()
def _send_msg(self, params):
call = {"id": 1, "method": "call",
"params": params}
self.ws.send(json.dumps(call))
def on_open(self, ws):
print("start open function")
self._send_msg([1, "login", ["",""]])
if __name__ == '__main__':
ws=WhatEver()
print("start")
ws.rin_forever()
print("close")
我尝试过重新安装所有模块(包括相同版本的Python和Windows和Ubuntu之间的websocket),在Windows系统上,以下代码的打印是正确的:
^{pr2}$
但是,当它在Ubuntu中运行时,虽然它确实打印,但它会遗漏一些print语句:start
start run forever
close
当我在Ubuntu中调试代码时,我发现主线程在self.ws.run_forever()调用中停止,而从不跳转到on_open函数。然后它爆发了。在