Celery不容易找到失败的任务,但Flower(主要的Celery管理网络应用程序)确实简化了这一点.它会在任务ID完成后记录它们,并且有一个API,可以让您只找到失败的任务.
Flower的相当基本的HTTP API包括/api/tasks 端点 - 您可以使用它 /api/tasks?state=FAILURE来仅显示失败的任务,然后解析JSON以提取您需要的内容.内容类似于您在Web API中获得的内容,并且curl使用jq进行原型设计和格式化/过滤很容易:
curl -s 'http://localhost:5555/api/tasks?state=FAILURE&limit=5' | jq . | less
Run Code Online (Sandbox Code Playgroud)
花当然需要安装和运行.
由于您有数百万个已完成的任务,您可能需要在数据存储中捕获失败的任务信息以便有效访问 - 也许Flower会有所帮助.或者你可以在Celery中尝试自定义的失败处理程序,以捕获失败的任务信息 - 请参阅此答案.
task id具有state和status属性。这样就可以通过id获取任务的状态。
my_task_id = my_task.delay(foo)
my_task_id.state
my_task_id.status
Run Code Online (Sandbox Code Playgroud)
给出状态是 PENDING、STARTED、RETRY、FAILURE 还是 SUCCESS。
据我所知,celery 仅显示活动的、计划的、保留的、撤销的任务,但 id 不显示失败的任务。
由于您拥有所有任务 ID,因此您可以循环查看它们的状态。
for task_id in task_id_list:
if task_id.state == 'FAILURE'
print(task_id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3191 次 |
| 最近记录: |