Django:生产中的 Celery 工人,Ubuntu 18 岁以上
Django: Celery worker in production, Ubuntu 18+
正在学习Celery,想请教:
- 当 Django 在 Ubuntu 中启动时,让 Celery 自动 运行 的绝对最简单的方法是什么?现在我通过终端手动启动
celery -A {prj name} worker -l INFO
。
- 我能否进行任何类型的配置,以便 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的设置
- 我有一个在生产环境中启动
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
- Celery 在启动时会得到 wsgi 文件,它将使用你的代码实例,这意味着你需要重新启动它来应用修改,你不能在生产中添加观察者(内存成本)
正在学习Celery,想请教:
- 当 Django 在 Ubuntu 中启动时,让 Celery 自动 运行 的绝对最简单的方法是什么?现在我通过终端手动启动
celery -A {prj name} worker -l INFO
。 - 我能否进行任何类型的配置,以便 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
疑惑是我误解了Celery的设置
- 我有一个在生产环境中启动
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
- Celery 在启动时会得到 wsgi 文件,它将使用你的代码实例,这意味着你需要重新启动它来应用修改,你不能在生产中添加观察者(内存成本)