在 python 上正确关闭 websocket

Properly closing websocket on python

我在 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._server=websockets.serve(listener, 'localhost', 8765)
    asyncio.get_event_loop().run_until_complete(self._server)
    asyncio.get_event_loop().run_forever()

    print("Finished...")

现在我想彻底停止此服务器,但似乎遗漏了什么。从文档中,他们声明要关闭服务器,我唯一要做的就是使用这样的东西(这是从主线程调用的自定义线程 class 中的一个函数):

def stop(self):
    self._server.ws_server.close()
    self._server.ws_server.wait_closed();

但从未打印 "Finished..." 文本。

我是不是误解了文档什么的?

干杯。

好吧,玩了一会儿之后我完成了使用这个的全新安装:

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;