我使用 apache2 虚拟服务器在同一台服务器上运行多个 Django/apache/wsgi 网站。我想使用芹菜,但是如果我为多个网站启动芹菜,所有网站都将使用我启动的最后一个芹菜实例的配置(日志、数据库等)。
有没有办法使用多个芹菜(每个网站一个)或一个芹菜?似乎应该是可行的,但我找不到如何。
很头疼,我刚来这里的时候没有注意到@Crazyshezy的评论。 我刚刚通过更改每个 Web 应用程序的 settings.py 中的代理 URL 来实现这一点。
app1.settings.py
BROKER_URL = 'redis://localhost:6379/0'
app2.settings.py
BROKER_URL = 'redis://localhost:6379/1'
是的,有办法。我们使用主管为我们需要的每个项目启动芹菜守护进程。
主管配置文件如下所示:
[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
如果使用此设置,还有一个优点:芹菜守护程序完全在用户空间中运行。
请记住为您的项目使用不同的代理后端。如果您使用相同的 rabbitmq 虚拟主机,或者如果您为每个项目使用相同的 redis 数据库,它将不起作用。