Tic*_*kon 6 django celery supervisord django-celery celeryd
我正在使用apache2虚拟服务器在同一台服务器上运行多个Django/apache/wsgi网站.我想使用芹菜,但如果我为多个网站启动celeryd,所有网站都将使用我开始的最后一个celeryd实例的配置(日志,数据库等).
有没有办法使用多个Celeryd(每个网站一个)或一个Celeryd用于所有这些?似乎它应该是可行的,但我不知道如何.
这个问题很头疼,我第一次来这里时没有注意到@Crazyshezy 的评论。我刚刚通过在settings.py 中为每个 Web 应用程序更改 Broker URL 来完成此操作。
app1.settings.py
BROKER_URL = 'redis://localhost:6379/0'
Run Code Online (Sandbox Code Playgroud)
app2.settings.py
BROKER_URL = 'redis://localhost:6379/1'
Run Code Online (Sandbox Code Playgroud)
是的,有办法。我们使用 Supervisor 为我们需要的每个项目启动 celery 守护进程。
主管配置文件看起来像这样:
[program:PROJECTNAME]
command=python manage.py celeryd --loglevel=INFO --beat
environment=PATH=/home/www-data/projects/PROJECTNAME/env/bin:/usr/bin:/bin
directory=/home/www-data/projects/PROJECTNAME/
user=www-data
numprocs=1
umask=022
stdout_logfile=/home/www-data/logs/%(program_name)s.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=/home/www-data/logs/%(program_name)s.error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
autorestart=true
autostart=True
startsecs=10
stopwaitsecs = 60
priority=998
Run Code Online (Sandbox Code Playgroud)
如果使用此设置,还有另一个优点:celery 守护进程完全在用户空间中运行。
请记住为您的项目使用不同的代理后端。如果您使用相同的rabbitmq虚拟主机或者每个项目使用相同的redis数据库,它将不起作用。
| 归档时间: |
|
| 查看次数: |
2152 次 |
| 最近记录: |