我试图检索asyncio.wait
超时到期后传递给协程/任务使用的参数。
例如:
todo = [f(10), f(20), g(20), f(30)]
done, pending = await asyncio.wait(todo, timeout=2.5)
如果在2.5秒后f(30)没有返回并被取消,我只会看到它,因为<Task pending name='Task-3' coro=<f()...
它为我提供了匹配的协程,f()
但没有args的值...
知道我如何获得这些参数吗?
谢谢
知道我如何获得这些参数吗?
一种简单的方法是在调用之前将它们附加到任务上wait()
:
todo = []
for arg in 10, 20, 20, 30:
task = asyncio.create_task(f(arg))
task.f_arg = arg
todo.append(task)
done, pending = await asyncio.wait(todo, timeout=2.5)
# creation arg available in `f_arg` regardless of whether the task
# is done or pending
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句