スーパーバイザーを介してキューを処理するセロリワーカーを管理しています。
これが私の/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
ファイルを同じディレクトリに作成する(元の/最初のファイルのみが実行される).
別のタスク名を使用して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