web-dev-qa-db-fra.com

superviseur - comment exécuter plusieurs commandes

Je gère un travailleur Celery qui traite la file d'attente via le superviseur.

Voici mon /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

Comment ajouter cette deuxième commande à exécuter?

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

J'ai essayé de séparer les deux commandes sur la même ligne avec && (A entraîné une erreur de syntaxe), en ajoutant une section [program:celery] Entièrement distincte à ce même fichier (a entraîné la seule exécution de la première) et en créant un fichier celery1.conf entièrement différent dans le même répertoire (seul le premier/premier fichier a été exécuté).

23
okoboko

Ajoutez une deuxième section avec nom de tâche différent. Si deux tâches ont le même nom de tâche, cette dernière remplace la première.

[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

Vous pouvez également les regrouper afin que les deux tâches soient redémarrées en tant que groupe:

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