python-3.x - 使用名称取消异步任务
问题描述
我有 n 个异步任务正在运行,如下所示。
import asyncio
def main(tasks):
for task in tasks:
await asyncio.create_task(do_something(task),name=task['name'])
asyncio.run(main(tasks))
一段时间后,我只需要使用任务名称取消特定任务。
解决方案
您可以使用以下命令按名称查找任务asyncio.all_tasks()
:
task, = [task for task in asyncio.all_tasks() if task.get_name() == name]
task.cancel()
请注意,这get_name()
需要 Python 3.8。对于早期的 Python 版本,您可以在创建任务时维护自己的名称到任务字典。
推荐阅读
- python - Pandas:用于索引远离已知标签某个位置的元素的惯用方法?
- google-apps-script - 如何以管理员身份使用 Google App Scripts 为其他教师创建 Google 课堂?
- latex - 在文件名中包含带有多个空格的图形
- reactjs - 如何着手修复 Semver 主要依赖漏洞
- javascript - 渲染html后如何获取所有资源
- angular - ngrx:检查是否存储在调度操作之前已经有相同的对象
- ios - 上传应用图像:“无效的 GeoJSON:您的路由应用覆盖文件无效。”
- javascript - URLSearchParams 总是返回空
- javascript - 错误:从 Firestore 集合中删除项目后添加了冗余字段
- vba - 关闭 Word 文档时是否触发了 VBA 事件?