2016-04-04 15 views
1

Ich bin mit einer Rails-Anwendung auf Heroku umschichten, und ich habe einen eigenen Prozesstyp definiert einige lang laufende Aufträge auszuführen, wirklich mit langer Laufzeit, ein Job kann nehmen Sie leicht etwas über eine Stunde oder mehr. Ich weiß, es ist besser, es in kleine Stücke zu teilen, aber das ist ziemlich problematisch für diese Aufgabe.Ist es möglich, eine Heroku App ohne Neustart einige Prozesstypen

Und das Problem ist, dass, wenn ich eine neue Version schieben - Heroku alle dynos startet (Web, Arbeiter, lange Arbeiter - alles). Ich frage mich, ob es möglich ist, nur einige Prozesstypen neu zu starten, z. nur die Web-Dynos?

Antwort

1

Nein, das ist nicht möglich. Am einfachsten und am besten skalierbar wäre es, Ihre lang laufenden Jobs in kleinere Teile aufzuteilen. So hätten Sie sehr viele sehr kleine Jobs, die sehr schnell bearbeitet werden. Wenn Ihre App neu gestartet wird, können Sie Ihren Prozess neu starten, da ein lang laufender Job nicht gestoppt wird. Alternativ

wird one-off dynos nicht neu gestartet werden, wenn Ihre Anwendung bereitgestellt wird. Mit der Heroku API können Sie programmgesteuert boot one-off dynos. Damit können Sie einen einmaligen Prüfstand für jeden zu bearbeitenden Langzeitjob starten.

Dieser Job würde verarbeitet (für bis zu 24 Stunden, wo es wäre cycled), und Sie könnten Ihre App bereitstellen, ohne es neu zu starten.

+0

Ja danke, ist einmalig eine großartige Idee. –

Verwandte Themen