我正在尝试使用Websocket库在另一个线程中运行Websocket服务器。
我完成此操作的方式似乎不理想。
我需要在另一个线程中使用websocket服务器,因为我需要在下面的*255/360
函数中进行工作,以便asyncio调用不会阻塞我的主循环。
目前,我有:
main
是否有一种避免将当前事件循环作为参数传递给另一个线程的方法,或者这是一种可接受的方法吗?
似乎,使用def serve_websocket(server, event_loop):
print(f'Websocket server listening on port {WEBSOCKET_PORT}')
event_loop.run_until_complete(server)
event_loop.run_forever()
def main():
event_loop = asyncio.get_event_loop()
ws_server = websockets.serve(msg_handler.ws_callback, LOCALHOST, WEBSOCKET_PORT)
try:
threading.Thread(target=serve_websocket, args=(ws_server, event_loop), daemon=True).start()
while True:
# Do my work here, passing data from websocket via queues
except:
print('Exit called')
这样的名称,我应该能够让websocket服务器监听而不会阻塞。