推送服务器

时间:2016-02-19 01:27:46

标签: python websocket python-3.5 python-asyncio

考虑(其中queueasyncio.Queue,并且我使用asyncio websockets库,该库在标准库中使用与asyncio相同的服务器接口):

async def handler(websocket: websockets.WebSocketServerProtocol, path):
    while True:
        data = await queue.get()
        await websocket.send(data)

我发现的是ConnectionClosed异常(当客户端断开连接并且也用于服务器关闭时触发)只会在我们等待{{ {1}}。在websocket客户端断开连接后,这可能会发生,因为我们将花费大部分时间等待send()

此外,我试图实现服务器的正常关闭。该代码看起来非常类似于标准

queue.get()

问题是我的websocket处理程序,即server.close() loop.run_until_complete(server.wait_closed()) 仍然继续在handler()上等待更多数据,然后提出queue对事件循环的异常。

我的问题:引入wait_closed()使wait_for()功能更能响应这些管理事件是否正确:

handler()

我在网上发现的大部分asyncio示例都非常简单,似乎并没有涵盖这些问题。

可以在我的关机序列期间将垃圾放入队列,这将允许引发异常,但这不会有助于早先断开客户端连接。

非常感谢任何带有示例的好参考。我发现官方的asyncio文档有些简洁。

0 个答案:

没有答案
相关问题