【发布时间】:2021-08-03 15:40:58
【问题描述】:
为了允许通过 Python websocket 接收数据超时,FAQ: How do I set a timeout on recv()? 建议使用异步接收数据:
await asyncio.wait_for(websocket.recv(), timeout=10)
由于我接收数据的函数不是异步的,我已经调整this answer 运行 asyncio 循环,直到接收到数据或发生超时:
loop.run_until_complete(asyncio.wait_for(ws.recv(), timeout=10))
不幸的是,这个声明似乎无效,因为发生了以下异常:
需要 asyncio.Future、协程或可等待对象
对我来说,看起来asyncio.wait_for 不是run_until_complete 的有效参数,尽管documentation 清楚地显示了一个awaits 的示例。
我在这里遗漏了什么 - 在同步方法中使用 asyncio.wait_for 的正确方法是什么?
【问题讨论】:
标签: python websocket async-await python-asyncio python-multithreading