python - 检索传递给取消的协程/任务的参数
问题描述
我正在尝试检索在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
推荐阅读
- flutter - 如何使 duration.years 和 duration.month 颤抖?
- r - R:从两列扩展二进制值序列
- c++ - 在 Go + SWIG + C++ 代码中清理内存管理
- elasticsearch - Elasticsearch 错误:[field] 之后 [exists] 未知令牌 [START_ARRAY]
- javascript - 如何通过赋予属性jQuery的值获取html元素
- wpf - WPF - 按钮在 IsMouseOver 和 IsPressed 触发器之间混淆
- clojure - 在clojure中使用conj和doseq在列表中添加元素
- html - 如何使用 css3 数据转换?
- mysql - 为什么将 <> 更改为 != 会导致我的查询需要两倍的时间才能运行?
- javascript - 如何使用 for 循环在 JavaScript 上制作搜索栏?