У меня есть несколько 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 секунд.