Django:生产中的 Celery 工人,Ubuntu 18 岁以上

Django: Celery worker in production, Ubuntu 18+

正在学习Celery,想请教:

  1. 当 Django 在 Ubuntu 中启动时,让 Celery 自动 运行 的绝对最简单的方法是什么?现在我通过终端手动启动celery -A {prj name} worker -l INFO
  2. 我能否进行任何类型的配置,以便 Celery 捕获 tasks.py 代码中的更改而无需重新启动 Celery?现在,我每次在 tasks.py 代码中更改某些内容时,都会 ctrl+c 并键入 celery -A {prj name} worker -l INFO。如果我可以自动启动 Celery ==> 需要重新启动 Ubuntu,我可以预见生产中这种方法的问题?

(setup: VPS, Django, Ubuntu 18.10 (no docker), 没有外部资源, 使用 Redis (自动启动)

我知道这是一个与 Django-Celery in production and 类似的问题,但仍然有点不清楚,因为它指的是亚马逊并且还使用 shell 脚本,crontabs。这些东西开箱即用似乎有点奇怪。

疑惑是我误解了Celery的设置

  1. 我有一个在生产环境中启动 Celery 的部署脚本。 在生产中最好启动 worker :
celery multi stop 5
celery multi start 5 -A {prj name} -Q:1 default -Q:2,3 QUEUE1 -Q:4,5 QUEUE2 --pidfile="%n.pid"

这将为不同的队列停止并启动 5 个 worker

  1. Celery 在启动时会得到 wsgi 文件,它将使用你的代码实例,这意味着你需要重新启动它来应用修改,你不能在生产中添加观察者(内存成本)