Sellerie multi soll nicht für die Produktion verwendet werden. Diese
ist, was ich verwende:
Es beginnt 10 Hauptprozesse mit 2 Arbeitern je. Also insgesamt 20 Arbeiterprozesse.
[program:celery_worker]
numprocs=10
process_name=%(program_name)s-%(process_num)s
directory=/opt/worker/main
environment=PATH="/opt/worker/main/bin:%(ENV_PATH)s"
command=/opt/worker/main/bin/celery worker -n worker%(process_num)s.%%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E
stdout_logfile=/var/log/celery/%(program_name)s-%(process_num)s.log
user=username
autostart=true
autorestart=true
startretries=99999
startsecs=10
stopsignal=TERM
stopasgroup=false
stopwaitsecs=7200
killasgroup=true
Wenn Aufträge ausgeführt haben Sie nicht wollen, TERM Signale an den PoolWorker Prozess zu senden, wie es die Arbeit wird dazu führen, frühzeitig abzubrechen. Was Sie wirklich tun möchten, ist das Senden des TERM-Signals an MainProcess, das darauf wartet, dass der Job beendet und dann geschlossen wird.
Also wollen Sie die primären Prozesse stoppen und wenn es zum Töten kommt, dann wollen Sie als Gruppe töten.
Verwenden Sie diesen Befehl, um den Worker Shutdown zu starten. Wenn die Worker nicht durch die stopwaitsecs
Zeit in der Supervisor-Konfiguration beendet werden, wird ein Kill-Signal gesendet und das wird alles töten, da killasgroup
auf True gesetzt ist.
sudo supervisorctl stop celery_worker:*
Beispiel für die oben genannte Konfiguration von Supervisord.
username 1659 1.1 0.2 119796 45632 ? S 10:45 0:06 [celeryd: [email protected]:MainProcess] -active- (worker -n worker7.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1662 1.1 0.2 119804 45716 ? S 10:45 0:06 [celeryd: [email protected]:MainProcess] -active- (worker -n worker6.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1663 1.2 0.2 119724 45412 ? S 10:45 0:06 [celeryd: [email protected]:MainProcess] -active- (worker -n worker5.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1666 1.1 0.2 119732 45524 ? S 10:45 0:05 [celeryd: [email protected]:MainProcess] -active- (worker -n worker4.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1671 1.2 0.2 119792 45724 ? S 10:45 0:06 [celeryd: [email protected]:MainProcess] -active- (worker -n worker3.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1674 1.2 0.2 119792 45420 ? S 10:45 0:06 [celeryd: [email protected]:MainProcess] -active- (worker -n worker2.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1678 1.1 0.2 119712 45708 ? S 10:45 0:05 [celeryd: [email protected]:MainProcess] -active- (worker -n worker1.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1679 1.2 0.2 119808 45476 ? S 10:45 0:06 [celeryd: [email protected]:MainProcess] -active- (worker -n worker0.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1680 1.1 0.2 119796 45512 ? S 10:45 0:05 [celeryd: [email protected]:MainProcess] -active- (worker -n worker9.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1681 1.1 0.2 119720 45736 ? S 10:45 0:06 [celeryd: [email protected]:MainProcess] -active- (worker -n worker8.%h --app=python --time-limit=3600 -c 2 -Ofair -l debug --config=celery_config -E)
username 1796 0.0 0.2 118160 39660 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1797 0.0 0.2 118232 39548 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1798 0.0 0.2 118152 39532 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1799 0.0 0.2 118156 39652 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1800 0.0 0.2 118168 39748 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1801 0.0 0.2 118164 39608 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1802 0.0 0.2 118192 39768 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1803 0.0 0.2 118200 39728 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1804 0.0 0.2 118168 39756 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1805 0.0 0.2 118188 39692 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-1]
username 1806 0.0 0.2 118152 39536 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-2]
username 1807 0.0 0.2 118232 39544 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-2]
username 1808 0.0 0.2 118164 39608 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-2]
username 1809 0.0 0.2 118200 39732 ? S 10:45 0:00 [celeryd: [email protected]:PoolWorker-2]
Wenn Sie stoppt sofort dann stopwaitsecs
mit fließendem Sellerie durch systemd
[email protected]:~$ sudo supervisorctl status
celery_worker:celery_worker-0 RUNNING pid 2488, uptime 0:00:48
celery_worker:celery_worker-1 RUNNING pid 2487, uptime 0:00:48
celery_worker:celery_worker-2 RUNNING pid 2486, uptime 0:00:48
celery_worker:celery_worker-3 RUNNING pid 2485, uptime 0:00:48
celery_worker:celery_worker-4 RUNNING pid 2484, uptime 0:00:48
celery_worker:celery_worker-5 RUNNING pid 2483, uptime 0:00:48
celery_worker:celery_worker-6 RUNNING pid 2482, uptime 0:00:48
celery_worker:celery_worker-7 RUNNING pid 2481, uptime 0:00:48
celery_worker:celery_worker-8 RUNNING pid 2490, uptime 0:00:48
celery_worker:celery_worker-9 RUNNING pid 2489, uptime 0:00:48
[email protected]:~$ sudo supervisorctl stop celery_worker:*
celery_worker:celery_worker-7: stopped
celery_worker:celery_worker-6: stopped
celery_worker:celery_worker-5: stopped
celery_worker:celery_worker-4: stopped
celery_worker:celery_worker-3: stopped
celery_worker:celery_worker-2: stopped
celery_worker:celery_worker-1: stopped
celery_worker:celery_worker-0: stopped
celery_worker:celery_worker-9: stopped
celery_worker:celery_worker-8: stopped
[email protected]:~$ sudo supervisorctl status
celery_worker:celery_worker-0 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-1 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-2 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-3 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-4 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-5 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-6 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-7 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-8 STOPPED Aug 02 11:17 AM
celery_worker:celery_worker-9 STOPPED Aug 02 11:17 AM
Ich habe keine Erfahrung auf 1 gesetzt passieren, aber können Sie es mit 'sudo systemctl Anschlag celery' stoppen ? – randomir
kann ich. Wenn ich 'sudo reboot' mache, werden die Worker Nodes nicht beendet. Beim Neustart, wenn Sellerie versucht, sich mit Redis zu verbinden und Arbeiter zu spawnen, schlägt es fehl. Es bringt auch die Startzeit auf 2 3 Minuten. Ich denke, das ist eher eine Systemfrage. edit: d. H. Ich möchte das Töten von Arbeitern und Sellerieprozessen vor dem Neustart automatisieren, so dass beim Hochfahren des Servers sauberes Slate zur Verfügung steht. –
Dies könnte besser sein auf [Ask Ubuntu] (https://www.askubuntu.com) – C8H10N4O2