mittwald / feature-requests

Sammlung von Feature-Ideen.
https://www.mittwald.de/roadmap
14 stars 0 forks source link

Prozess-Kontroll-System (wie supervisord, systemd) #76

Open patrickhilker opened 8 months ago

patrickhilker commented 8 months ago

Welches Problem möchtest du lösen? Wann tritt es auf? Als Entwickler benötige ich bestimmte Prozesse, die automatisch am Leben erhalten werden. Das können bspw. bestimmte Worker-Prozesse sein, die im Hintergrund Tasks meiner App bearbeiten.

Welche Lösungsideen hast du? Ein System ähnlich wie supervisord oder systemd nutzen, mit dem man Prozesse definieren kann.

Hast du zusätzliche Informationen (wie z.B. Screenshots)? Ein häufiger Anwendungsfall dürften Worker für Symfony Messenger sein.

Als (zugegebenermaßen unschöner) Workaround ist es möglich, solche Worker per Cronjob zu starten und ihnen ein Timeout mitzugeben, nachdem sie sich wieder beenden sollen.

Richtet man beispielsweise einen Cronjob ein, der alle 5 Minuten läuft, kann man den Worker so starten, dass er sich nach 5 Minuten automatisch beendet. So läuft immer ein Worker parallel. Durch häufigere Ausführung des Cronjobs bzw. längere Laufzeiten lässt sich so auch die Anzahl der Worker skalieren.

php bin/console messenger:consume <queue-name> -q --time-limit 300
AlexBa commented 2 months ago

Es hat zudem den Vorteil mit Supervisord, dass nicht mehr Prozesse als nötig gestartet werden. Mit Cronjobs unter Symfony ist es z.B. möglich, dass im schlimmsten Falle dutzende Jobs parallel laufen (wenn die Tasks zu lange brauchen) und der Server dadurch abstürzt. Sowas ich uns mal passiert damals.