1

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

celery worker -A my_project.celery

之后这个命令:

celery -A my_project beat -l info -S django

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

4

1 回答 1

1

您使用芹菜的方法是正确的。您可以使用参数-B, --beat来使用单个命令启动节拍和工作人员:

# 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 )

于 2017-04-21T11:19:54.790 回答