主管 - 如何 运行 多个命令

supervisor - how to run multiple commands

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

这是我的 /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 文件(结果只有 original/first 一个是 运行)。

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

[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