【问题标题】:Am I executing celery shared tasks correct?我执行芹菜共享任务是否正确?
【发布时间】:2017-09-18 08:17:06
【问题描述】:

这是我开始 celery 定期任务的方式。首先我执行这个命令:

celery worker -A my_project.celery

然后这个命令:

celery -A my_project beat -l info -S django

在两个不同的终端选项卡上执行这两个命令后,我的 celery beat 周期性任务开始运行。如果我不运行所描述的命令之一,我的定期任务将不会运行。我的问题是:有没有什么方法可以使用单个命令启动 celery,或者使用 runserver 命令更好?

【问题讨论】:

    标签: django celery django-celery celerybeat periodic-task


    【解决方案1】:

    您使用 Celery 的方法是正确的。您可以使用参数-B, --beat 使用单个命令启动beat 和worker:

    # This will start worker AND beat process
    celery worker --app=my_project -l=INFO --beat -S django
    

    但是不要在生产中使用这个,请参阅 Celery 文档 (http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html) 中的注释:

    -B 用于开发目的。 生产环境需要单独启动celery beat

    几点注意事项:1)我认为没有办法将 Celery 和 runserver 一起运行(老实说,我认为这不是一个好主意); 2)我在您的问题中看到django-celery 标签。这是集成 Django 和 Celery 的古老且已弃用的方式:

    仅当您想使用 DJANGO 结果后端时才需要此项目 与管理员集成(来源:https://github.com/celery/django-celery

    【讨论】:

    • 谢谢先生!我的问题与这个问题无关,但由于您的回答,我已经能够解决困扰我数周的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2021-12-16
    • 2018-03-07
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多