Задержка между выполнением нескольких процессов Supervisor

Задержка между выполнением нескольких процессов Supervisor

У меня есть несколько PHP-воркеров, и мне нужно установить задержку между запуском каждого из них. Как с этим справиться?

Запустить 1 процесс / Подождать 20 секунд / Запустить 2-й процесс / Подождать 20 секунд ... Поддерживайте 50 процессов одновременно.

[program:get_comments]
directory=/var/www/
command=/usr/bin/php post_request.php
user=root
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
numprocs=50
stdout_logfile=/var/www/worker.log
stderr_logfile=/var/www/worker.error

решение1

У меня была похожая проблема, когда запуск 64 процессов python rq-worker с помощью supervisorctl вызывал предупреждение CPU и RAM при каждом перезапуске. Я сделал следующее:

command=/bin/bash -c "sleep %(process_num)02d && virtualenv/bin/python3 manage.py rqworker --name %(program_name)s_my-rq-worker_%(process_num)02d default low"

По сути, перед запуском команды python я сплю в течение N секунд, где N — номер процесса, что по сути означает, что супервизор будет запускать один процесс rq-worker каждую секунду.

В вашем случае должно сработать следующее:

command=/bin/bash -c "sleep $((%(process_num)01d + 20)) && /usr/bin/php post_request.php" 

Обратите внимание, что первый процесс также начнется через 20 секунд.

Связанный контент