【发布时间】:2020-04-06 18:34:23
【问题描述】:
有没有办法使用两个单独的async for 循环从 websocket 连接中消费两次消息?
运行下面的代码会给出 RuntimeError: cannot call recv 而另一个协程已经在等待下一条消息。
import websockets
import asyncio
async def foo(ws):
async for msg in ws:
print(f"foo: {msg}")
async def bar(ws):
async for msg in ws:
print(f"bar: {msg}")
async def main():
async with websockets.connect("wss://echo.websocket.org") as ws:
asyncio.create_task(foo(ws))
asyncio.create_task(bar(ws))
await ws.send("Hello")
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
【问题讨论】:
-
您想阅读同一条消息两次,还是一次阅读两条消息?
-
阅读同一条消息两次。
标签: python python-3.x websocket python-asyncio