@asyncio.coroutine
def listener():
while True:
message = yield from websocket.recieve_message()
if message:
yield from handle(message)
loop = asyncio.get_event_loop()
loop.run_until_complete(listener())
假设我使用带有asyncio的websockets。这意味着我收到来自websockets
的消息。当我收到一条消息时,我想处理这条消息,但是我用我的代码丢失了所有的异步事物。因为yield from handle(message)
正在定义阻塞...我怎么能找到一种方法使其非阻塞?就像,在同一时间处理多个消息。在我可以处理另一条消息之前,不必等待消息被处理。Asyncio和无限循环
谢谢。
通常你需要每个websocket读取任务,写入websocket可能会与其他任务异步执行。 “手柄”也可能是单独的任务。 你的代码不完整,所以你很难得到你需要的东西。 –
如果这是你调用的唯一协程,那么监听器会阻塞,因为它会无限运行(因为while循环)。如果你有另一个同时运行的协同程序(从语句中产生它自己的收益),那么asyncio将在语句收益之间来回反弹,因此它将不再是“阻塞”的。 – shongololo