首页 > 解决方案 > 使用名称取消异步任务

问题描述

我有 n 个异步任务正在运行,如下所示。

    import asyncio
    def main(tasks):
       for task in tasks:
          await asyncio.create_task(do_something(task),name=task['name'])
    asyncio.run(main(tasks))

一段时间后,我只需要使用任务名称取消特定任务。

标签: python-3.xpython-asyncio

解决方案


您可以使用以下命令按名称查找任务asyncio.all_tasks()

task, = [task for task in asyncio.all_tasks() if task.get_name() == name]
task.cancel()

请注意,这get_name()需要 Python 3.8。对于早期的 Python 版本,您可以在创建任务时维护自己的名称到任务字典。


推荐阅读