python - 如何按名称取消异步任务?

标签 python python-3.x python-asyncio

我有 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 - 如何按名称取消异步任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64764679/

相关文章:

python - 在 asyncio add_done_callback 回调中访问上下文变量

python-3.x - 如何将基于回调的低级代码与高级异步/等待代码桥接?

python - 使用 python-pptx 打印 Powerpoint 幻灯片

python - 使用 pyowm 获取平均温度(python)

python - 如何在 Win 和 MAC 上使用 Python 检测进程是否正在运行

python - 在保留换行符和段落结构的同时进行标记化

python - 在 Python 中渲染一棵树

python - 异步 : speculatively await multiple futures

Python:嵌套循环的问题。想要多次运行随机变量并对结果求平均值......

python - 名称 'xrange' 未在 Python 3 中定义