测试芹菜任务是否仍在处理中

Ret*_*old 11 python django celery celery-task

如何测试是否仍在芹菜中处理任务(task_id)?我有以下场景:

  1. 在Django视图中启动任务
  2. 将BaseAsyncResult存储在会话中
  3. 关闭芹菜守护程序(硬)以便不再处理任务
  4. 检查任务是否"死"

有任何想法吗?可以查找芹菜正在处理的所有任务并检查我的是否仍然存在?

cro*_*jer 3

在模型中定义一个字段 (PickledObjectField) 来存储 celery 任务:

class YourModel(models.Model):
    .
    .
    celery_task = PickledObjectField()
    .
    .

    def task():
        self.celery_task = SubmitTask.apply_async(args = self.task_detail())
        self.save()
Run Code Online (Sandbox Code Playgroud)

如果您的任务不特定于任何模型,您应该专门为 celery 任务创建一个模型。

否则我建议使用 django-celery。它有一个很好的监控功能:
http://ask.github.com/celery/userguide/monitoring.html#django-admin-monitor,以良好的图形方式将任务详细信息保存在 django 模型中。