Um eine große Anzahl von Jobs zu verarbeiten, führe ich eine variable Anzahl von Warteschlangen Worker abhängig davon, wie viel Arbeit zu vervollständigen ist. Ich möchte nicht mehr Arbeitskräfte anstellen, als notwendig sind, um die Arbeit zu erledigen, die in einem von uns für angemessen gehaltenen Zeitraum erledigt werden muss.Laravel Artisan CLI sicher stoppen Daemon Queue Worker
Im Moment starte ich 5 Daemon Queue Worker zu Testzwecken, aber in der Produktion könnte diese Zahl zwischen 25 & 100 Arbeiter, möglicherweise mehr. Ich verstehe, dass ich bei der Bereitstellung die Warteschlangenarbeiter stoppen muss, indem ich zuerst das Framework in den Wartungsmodus versetzt, indem ich php artisan down
verwende, da das Flag --daemon
das Framework nur lädt, wenn der Worker gestartet wird Bereitstellen, bis der Worker neu gestartet wird.
Wenn ich die Arbeiter aus irgendeinem Grund stoppen musste, konnte ich die Anwendung in den Wartungsmodus setzen mit php artisan down
, was dazu führen würde, dass die Arbeiter sterben, sobald sie ihren aktuellen Job bearbeitet haben (wenn sie einen arbeiten). Es kann jedoch vorkommen, dass ich die Mitarbeiter töten möchte, ohne die gesamte Anwendung in den Wartungsmodus zu versetzen.
Gibt es eine sichere Möglichkeit, die Arbeiter so zu stoppen, dass sie ihren aktuellen Job weiter bearbeiten und dann sterben, ohne die gesamte Anwendung in den Wartungsmodus zu versetzen?
Wesentlichen, was ich brauche, ist ein php artisan queue:stop
, die wie php artisan queue:restart
verhält, aber nicht die Arbeiter neu starten, wenn die Arbeit erledigt ist.
Ich war zu erwarten, dass ein wie php artisan queue:stop
Befehl, der dies tun würde, aber das scheint nicht der Fall zu sein.
Mit ps aux | grep php
Ich bin in der Lage, die Prozess-IDs für die Arbeiter zu bekommen, und ich könnte die Prozesse auf diese Weise töten, aber ich möchte nicht den Prozess mitten in der Arbeit an einem Job zu töten.
Danke.
Für jeden, der diese Frage findet. http://stackoverflow.com/questions/30060526/laravel-artisan-cli-safely-stop-daemon-queue-workers#comment48332831_30087630 hat die Antwort. php artisan queue: Neustart stoppt die Worker. Der Name "Neustart" ist irreführend. Die Arbeiter werden nicht neu gestartet, nachdem sie gestoppt wurden. – Vigs
ist korrekt.Der "Neustart" findet nur statt, wenn Sie etwas wie Supervisor-Setup zur Überwachung haben und diese nach dem Beenden automatisch neu starten. (Welches ist die typische Konfiguration.) –