如何测试任务 (task_id) 是否仍在 celery 中处理?我有以下场景:
- 在 Django View 中启动任务
- 在 session 中存储 BaseAsyncResult
- 关闭 celery 守护进程(硬)以便不再处理任务
- 检查任务是否“已死”
有什么想法吗?能否查找 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/