29

celeryd在开发中,运行Django 开发服务器有点麻烦。例如,是否可以要求celery在开发过程中同步运行任务?或者类似的东西?

4

4 回答 4

46

是的,您可以通过在设置CELERY_TASK_ALWAYS_EAGER = True中进行设置来做到这一点。
(常量以前称为CELERY_ALWAYS_EAGERhttp://docs.celeryproject.org/en/latest/userguide/configuration.html#task-execution-settings

于 2010-10-06T17:50:00.220 回答
7

在 django-celery 中还有一个自定义的 Django 测试运行器,它有助于 CELERY_ALWAYS_EAGER。在文档上阅读更多关于在 Django 中使用 Celery的信息。

于 2011-03-18T21:26:26.927 回答
5

4.0在Celery 的版本中,CELERY_ALWAYS_EAGER设置被CELERY_TASK_ALWAYS_EAGERDjangosettings.pytask_always_eager本机的celery conf.

由于 celery 配置从 3.x 版本到 4.x 的众多变化分布在多行中,我建议使用内置的设置迁移工具。

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

于 2017-02-25T19:21:53.823 回答
0

在编写了 5 年多的 Celery 任务之后,我注意到我开发的一种模式可以帮助测试和简化开发 - 我意识到如果我的 Celery 任务是围绕我通常放入myproject.impl包中的常规 Python 函数的薄包装器会更好. Celery 任务可能包含一些与 Celery 严格相关的逻辑,例如使用分布式锁定、显式重试逻辑等。

于 2019-11-03T21:19:03.453 回答