Ich habe mehrere PHP-Worker und muss zwischen deren Start eine Verzögerung einstellen. Wie gehe ich damit um?
1. Prozess starten / 20 Sek. warten / 2. Prozess starten / 20 Sek. warten ... Halten Sie 50 Prozesse gleichzeitig am Leben.
[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
Antwort1
Ich hatte ein ähnliches Problem, bei dem das Starten von 64 Python-RQ-Worker-Prozessen mit Supervisorctl bei jedem Neustart CPU- und RAM-Warnungen auslöste. Ich habe Folgendes getan:
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"
Grundsätzlich schlafe ich vor dem Ausführen des Python-Befehls N Sekunden lang, wobei N die Prozessnummer ist. Das bedeutet im Wesentlichen, dass mein Supervisor jede Sekunde einen RQ-Worker-Prozess startet.
In Ihrem Fall sollte Folgendes funktionieren:
command=/bin/bash -c "sleep $((%(process_num)01d + 20)) && /usr/bin/php post_request.php"
Bitte beachten Sie, dass der erste Vorgang auch nach 20 Sekunden startet.