Supervisor - 如何运行多个命令

28

我正在通过Supervisor管理一个处理队列的Celery工作者。

这是我的/etc/supervisor/celery.conf文件:

[program:celery]
command = /var/worker/venv/bin/celery worker -A a_report_tasks -Q a_report_process --loglevel=INFO
directory=/var/worker
user=nobody
numprocs=1
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 60
stdout_logfile=/var/log/celery/worker.log
stderr_logfile=/var/log/celery/worker.log
killasgroup=true
priority=998

我该如何添加第二个命令以便运行?

/var/worker/venv/bin/celery worker -A b_report_tasks -Q b_report_process --loglevel=INFO

我尝试使用&&在同一行分离两个命令(结果出现语法错误),在相同文件中添加一个完全独立的[program:celery]部分(结果只运行第一个),并在同一目录下创建一个完全不同的celery1.conf文件(结果只运行原始/第一个)。


从您的帖子中可以看出,第一个命令和第二个命令是相同的。这是打字错误吗? - dhke
啊!是的,那只是个打错字。已经修复好了。 - okoboko
1个回答

52

添加第二个部分,使用不同的任务名称。如果两个任务具有相同的任务名称,则后者将覆盖前者。

[program:celeryb]
command = /var/worker/venv/bin/celery worker -A b_report_tasks -Q b_report_process --loglevel=INFO
directory=/var/worker
user=nobody
numprocs=1
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 60
stdout_logfile=/var/log/celery/worker.log
stderr_logfile=/var/log/celery/worker.log
killasgroup=true
priority=998

你还可以将它们分组,这样两个任务就会作为一组重新启动:

[group:celery-workers]
programs=celery,celeryb
priority=999

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接