如何在 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 1.9 + celery + django-celry 实现定时任务