在Python中等待一段时间

70gysomp  于 2022-11-26  发布在  Python
关注(0)|答案(2)|浏览(171)

因此等待服务器会带来痛苦:

import asyncio 
    #...
    greeting = await websocket.recv() # newer ends

我想要一个

greeting = await websocket.recv() for seconds(10)

那么如何在Python中只等待有限的时间呢?

r6vfmomb

r6vfmomb1#

await表达式没有timeout参数,但是asyncio.wait_for(多亏了AChampion)函数有。我猜这是因为await表达式与语言本身的协程定义绑定在一起,不依赖于时钟或特定的事件循环。这个功能留给了标准库的asyncio模块。

afdcj2ne

afdcj2ne2#

我在一个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错误。
超时错误如下:

<class 'asyncio.exceptions.TimeoutError'>

您可以将其与其他真正的错误区别对待。

相关问题