我执行芹菜共享任务是否正确?

Am I executing celery shared tasks correct?

以下是我启动 celery 周期性任务的方式。首先我执行这个命令:

celery worker -A my_project.celery

然后这个命令:

celery -A my_project beat -l info -S django

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

你使用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 is meant to be used for development purposes. For production environment, you need to start celery beat separately.

几个注意事项:1)我认为没有办法将运行芹菜和runserver放在一起(老实说,我认为这不是一个好主意); 2) 我在你的问题中看到了 django-celery 标签。这是集成 Django 和 Celery 的旧的和过时的方式:

THIS PROJECT IS ONLY REQUIRED IF YOU WANT TO USE DJANGO RESULT BACKEND AND ADMIN INTEGRATION (Source: https://github.com/celery/django-celery)