【发布时间】:2022-10-13 15:37:12
【问题描述】:
我必须执行检查以查看我的 celery 任务是否已经创建,这就是为什么我每次调用 .delay() 或 apply_async() 时都尝试检查 rabbitmq 队列并查找任务 ID。问题是在我的代码中传递了很多签名,我不知道如何从签名中获取任务 ID。根据文档,签名对象的内容如下所示:
{'task': 'tasks.add', args=(2, 2), kwargs={}, options={}}
(https://docs.celeryproject.org/en/stable/reference/celery.html)
但是这里的任务只是一个字符串,我不确定是否已经分配了 id。这就是我想在我的代码中做的事情:
some_task_signature= task.s(parameters)
task_id = some_task_signature.task_id # I'm not sure if this is actually in the signature
if not is_task_active_or_registered(app, task_id)
some_task_signature.delay()
我正在使用部署在 Windows 10 虚拟机上的 celery 版本 3.1.25 和 python 3.6。
任何帮助将非常感激。
【问题讨论】:
-
你想通了吗?还在寻找如何从通过签名创建的任务中收集任务 ID,但在我能找到的文档中没有提及。
标签: celery task python-3.6