【问题标题】:Developing with Django+Celery without running `celeryd`?在不运行“celeryd”的情况下使用 Django+Celery 进行开发?
【发布时间】:2011-04-21 22:12:40
【问题描述】:

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

【问题讨论】:

    标签: python django celery


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在 Celery CELERY_ALWAYS_EAGER 的版本 4.0 中,设置在 Django settings.py 中被 CELERY_TASK_ALWAYS_EAGER 替换,或者在 celery conf 中本机的 task_always_eager

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

      celery upgrade settings --django

      来源:

      幸运的是,您不必手动更改文件,因为 celery 升级设置 --django 程序应该做正确的事情。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2017-01-24
        • 1970-01-01
        • 2015-09-30
        • 2019-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多