从前端使用AJAX查询Celery以了解创建的任务是否已完成的最佳方法?

时间:2011-01-30 23:49:14

标签: django state celery celery-task

我正在使用Django和Celery + RabbitMQ来创建用户上传的视频的视频转换任务。 Now I know how to query celery to get the status.我的问题是在哪里保存与每个任务相关的task_id,我应该将它保存在模型中还是在django的缓存中?

我知道过去曾提出类似的问题,例如this stackoverflow question但是还没有确定的答案。我知道这个问题的答案因开发人员的偏好而有所不同,但如果有人能够教育不同方法的优缺点,那就太棒了。

为了重新迭代,我将使用task_id经常从前端触发AJAX查询,以了解视频转换是否已完成。

2 个答案:

答案 0 :(得分:8)

如果您安装了django_celery,则可以查询task_status包中的is_task_successfuldjcelery.views等视图。它们返回一个JSON字典,因此您可以使用JavaScript处理它们。

答案 1 :(得分:4)

请参阅我对您的关联问题的回答:Test if a celery task is still being processed

因此,在设置celery_task字段后,您可以轻松定义ajax视图,该视图将以所需格式返回任务状态。