任务如下:我需要在 django 项目页面上显示当前 celery 任务的状态,以及任务队列(如果有)。目前我在 django 应用程序中自己完成了任务:
from bgp.celery import app
tasks = app.tasks.values()
print tasks[0].AsyncResult(tasks[0].request.id).state
我得到的是结果:
ValueError: AsyncResult requires valid id, not <type 'NoneType'>
如果显示所有任务的 id,其中有 33 个,那么它们都将具有值 None。另一方面,当我通过按名称调用任务时,任务似乎被分配了相同的 ID。其实问题是:我是否理解正确,如果 celery 任务没有运行,那么它的 id 将为 None 并且无法计算状态?
一个传递的问题:如何通过 python 代码查看已完成任务的状态,并通过任务中的 python 代码查看错误(如果有)?
您可以使用
inspect
.在响应中,您可以获取每个任务的 id。
示例答案(为简洁起见省略了半个字段):