Ich habe also ein ziemlich einfaches Setup auf Heroku . Ich benutze RabbitMQ für die Bearbeitung von Hintergrundjobs. Mein Setup besteht aus einem Knotenscript, das täglich mit dem Heroku Scheduler Addon läuft. Die Skripts fügen Jobs zur Warteschlange hinzu, der Worker wiederum konsumiert sie und delegiert sie zur Behandlung an ein separates Modul.
Das Problem beginnt, nachdem ich ein Ereignis SIGTERM erhalten habe, das Heroku von Zeit zu Zeit zufällig initiiert, bevor die Instanz neu gestartet wird.
Aus irgendeinem Grund wird der Worker nach dem Neustart der Instanz nie wieder aufgerufen. Nur wenn ich es manuell neu starte, indem ich heroku ps:scale worker=0
und heroku ps:scale worker=1
ausführe. Der Worker verbraucht weiterhin die ausstehenden Jobs.
Hier ist mein Arbeiter:
%Vor% Die Methode close()
für das Objekt jackrabbit
nimmt einen Rückruf , sollten Sie vermeiden, den Prozess zu beenden, bis das beendet ist: