如何在 django celery 中处理未完成的任务

Posted

技术标签:

【中文标题】如何在 django celery 中处理未完成的任务【英文标题】:How to process unfinished tasks in django celery 【发布时间】:2013-09-09 02:36:06 【问题描述】:

我正在开发一个项目,其中 zip/gzip 文件由用户上传,然后使用 Celery 解压缩和处理。该网站基于 Django。 现在我面临的问题是当 Celery 没有运行时上传的文件很少。无论如何,我可以为这些未处理的文件重新运行 celery 吗?如果是,那怎么办?

谢谢。

【问题讨论】:

我认为 celery 会自动启动在 celery 未运行时启动的任务。运行./manage.py celeryd -lDEBUG,在终端中查看。 嗯,输出了很多行。我实际上可以用它做什么? 它在调试模式下运行 celery。您应该会看到类似Task Accepted 的内容,这意味着您的任务已经开始。 实际上,RabbitMQ 是在生产服务器上使用的。而且我认为上传某些文件时该服务未激活。现在的问题是,虽然文件的相关数据(如文件名、文件类型等)已发布在数据库中,但文件并未解压缩和处理。你能建议我解决这个问题吗? 嗯,在这种情况下,您必须从 Django shell 手动启动这些任务。您需要跟踪任务的 ID 并手动运行它。这两个链接将对您有所帮助:docs.celeryproject.org/en/latest/faq.html***.com/questions/12900023/… 【参考方案1】:

您必须手动跟踪这些任务并从Django shell 开始。 celery 创建了很多表来跟踪这些任务。我已经有一段时间没有使用芹菜了,但我的猜测仍然是:

djcelery_crontabschedule

djcelery_taskstate

celery 文档中也可能有关于此的内容:http://docs.celeryproject.org/en/2.3/getting-started/first-steps-with-celery.html

您也可以在 celery mailing list 上询问您的问题。

【讨论】:

以上是关于如何在 django celery 中处理未完成的任务的主要内容,如果未能解决你的问题,请参考以下文章

Django-Celery 进度条

Django 1.9 + celery + django-celry 实现定时任务

在Django中使用Celery的配置方法

如何在任务中获取芹菜结果模型(使用 django-celery-results)

带有 Celery 的 Django - 未找到现有对象

未执行的任务(Django + Heroku + Celery + RabbitMQ)