在不运行 `celeryd` 的情况下使用 Django+Celery 开发?

29 投票
4 回答
10026 浏览
提问于 2025-04-16 05:05

在开发过程中,同时运行 celeryd 和 Django 开发服务器有点麻烦。有没有办法让 celery 在开发时同步执行任务呢?或者类似的做法?

4 个回答

5

在Celery的4.0版本中,原来的CELERY_ALWAYS_EAGER设置被替换成了CELERY_TASK_ALWAYS_EAGER,这个设置需要在Django的settings.py文件里进行修改,或者在celery conf中直接使用task_always_eager

由于从3.x版本到4.x版本的Celery配置有很多变化,分散在很多行里,所以我建议使用内置的设置迁移工具。

你可以运行这个命令:celery upgrade settings --django

来源:

幸运的是,你不需要手动去修改文件,因为celery upgrade settings --django这个程序会自动帮你处理好。

http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#step-4-upgrade-to-celery-4-0

7

在django-celery里,还有一个特别的测试工具,可以帮助你使用CELERY_ALWAYS_EAGER这个功能。想了解更多关于如何在Django中使用Celery的信息,可以查看官方文档

46

是的,你可以通过在设置中把 CELERY_TASK_ALWAYS_EAGER = True 这一行加上来实现这个功能。
(这个常量之前叫做 CELERY_ALWAYS_EAGER
你可以查看这个链接了解更多信息:http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-execution-settings

撰写回答