正确关闭python上的websocket
我正在使用python上的websockets库在自定义线程中创建websockets服务器:正确关闭python上的websocket,python,websocket,python-asyncio,Python,Websocket,Python Asyncio,我正在使用python上的websockets库在自定义线程中创建websockets服务器: loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) async def listener(websocket, path): async for message in websocket: self.onMessage.emit(message) self._
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
async def listener(websocket, path):
async for message in websocket:
self.onMessage.emit(message)
self._server=websockets.serve(listener, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(self._server)
asyncio.get_event_loop().run_forever()
print("Finished...")
现在我想彻底停止这台服务器,但似乎我遗漏了什么。从文档中,他们指出要关闭服务器,我唯一要做的就是使用类似这样的东西这是自定义线程类中的一个函数,名为From main thread:
def stop(self):
self._server.ws_server.close()
self._server.ws_server.wait_closed();
但是最后的结果。。。文本从不打印
我是不是误解了文件内容
干杯。好吧,在玩了一点之后,我完成了一个干净的安装,使用以下方法:
async def _internalStop(self):
self._server.ws_server.close()
await self._server.ws_server.wait_closed()
self._eventLoop.stop();
while(self._eventLoop.is_running()):
time.sleep(0.5)
self._eventLoop.close();
self._eventLoop=None;
在玩了一点之后,我完成了一个干净的安装,使用以下方法:
async def _internalStop(self):
self._server.ws_server.close()
await self._server.ws_server.wait_closed()
self._eventLoop.stop();
while(self._eventLoop.is_running()):
time.sleep(0.5)
self._eventLoop.close();
self._eventLoop=None;
由于wait_closed是一个协同程序,您需要等待它或使用run_until_complete让它运行它的进程。不知道这是一个协同程序,无论如何这不是循环没有结束的原因。因为wait_closed是一个协同程序,您需要等待它或使用run_until_complete让它运行它的进程。不知道这是一个协同程序,无论如何,这不是循环没有结束的原因。