web-dev-qa-db-ja.com

スーパーバイザ-複数のコマンドを実行する方法

スーパーバイザーを介してキューを処理するセロリワーカーを管理しています。

これが私の/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

この2番目のコマンドを追加して実行するにはどうすればよいですか?

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

同じ行で2つのコマンドを&&で区切って(構文エラーが発生しました)、完全に別の[program:celery]セクションをこの同じファイルに追加しました(最初のコマンドのみが実行されました)。まったく異なるcelery1.confファイルを同じディレクトリに作成する(元の/最初のファイルのみが実行される).

23
okoboko

別のタスク名を使用して2番目のセクションを追加します。 2つのタスクが同じタスク名を持っている場合、後者が前者を上書きします。

[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
34
dhke