因此等待服务器会带来痛苦:
import asyncio #... greeting = await websocket.recv() # newer ends
我想要一个
greeting = await websocket.recv() for seconds(10)
那么如何在Python中只等待有限的时间呢?
r6vfmomb1#
await表达式没有timeout参数,但是asyncio.wait_for(多亏了AChampion)函数有。我猜这是因为await表达式与语言本身的协程定义绑定在一起,不依赖于时钟或特定的事件循环。这个功能留给了标准库的asyncio模块。
afdcj2ne2#
我在一个try:except:块中使用了它,
try:
except:
time_seconds = 60 try: result = await asyncio.wait_for(websocket.recv(), timeout=time_seconds) print(result) except Exception as e: if str(type(e)) == "<class 'asyncio.exceptions.TimeoutError'>": print('specifically a asyncio TimeoutError') else: Print('different error:', e)
如果在接收到消息之前发生超时,则会得到TimeoutError错误。超时错误如下:
TimeoutError
<class 'asyncio.exceptions.TimeoutError'>
您可以将其与其他真正的错误区别对待。
2条答案
按热度按时间r6vfmomb1#
await表达式没有timeout参数,但是asyncio.wait_for(多亏了AChampion)函数有。我猜这是因为await表达式与语言本身的协程定义绑定在一起,不依赖于时钟或特定的事件循环。这个功能留给了标准库的asyncio模块。
afdcj2ne2#
我在一个
try:
except:
块中使用了它,如果在接收到消息之前发生超时,则会得到
TimeoutError
错误。超时错误如下:
您可以将其与其他真正的错误区别对待。