python - 测试 celery 任务是否仍在处理中

标签 python django celery celery-task

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

  1. 在 Django View 中启动任务
  2. 在 session 中存储 BaseAsyncResult
  3. 关闭 celery 守护进程(硬)以便不再处理任务
  4. 检查任务是否“已死”

有什么想法吗?能否查找 celery 正在处理的所有任务并检查我的任务是否仍然存在?

最佳答案

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

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

    def task():
        self.celery_task = SubmitTask.apply_async(args = self.task_detail())
        self.save()

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

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

关于python - 测试 celery 任务是否仍在处理中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335577/

相关文章:

Django 形成干净的数据

python - Django 模型在模板中不可迭代

Python 多处理 : billiard vs multiprocessing

python - 我可以使用 Tornado+Celery+RabbitMQ+Redis 吗?

python - 为什么 `celery.current_app` 引用 Flask View 函数中的默认实例

python - GoogleAppEngine 数据存储未返回任何记录

python - __iter__ 和 __getitem__ 有什么区别?

java - 将 Python/JS 转换为 Java - JSON 和 HMAC

python - 使用多个输入测试 Click 应用程序提示

python - Django 单选按钮在 mark_safe() 中显示为项目符号列表