wait_for提供了两个更多功能:
>允许定义超时,
>让你指定循环
你的例子:
await f1
await asyncio.wait_for(f1, None) # or simply asyncio.wait_for(f1)
两个等待都将无限期地等待结果(或异常).在这种情况下,平原等待更合适.
另一方面,如果您提供超时参数,它将等待具有时间约束的结果.如果超过超时时间,则会引发TimeoutError,将来会被取消.
async def my_func():
await asyncio.sleep(10)
return 'OK'
# will wait 10s
await my_func()
# will wait only 5 seconds and then will raise TimeoutError
await asyncio.wait_for(my_func(), 5)
另一件事是循环参数.在大多数情况下你不应该被打扰,用例是有限的:为测试注入不同的循环,运行其他循环…
这个参数的问题是,所有后续任务/函数也应该传递循环…