Wiederholen Sie Sellerie-Aufgaben mit exponentiellem Rückzug
Für eine Aufgabe wie diese:
from celery.decorators import task
@task()
def add(x, y):
if not x or not y:
raise Exception("test error")
return self.wait_until_server_responds(
wenn es eine exception wirft und ich will versuchen es aus der daemon-Seite, wie Sie anwenden können, eine exponential-back-off-Algorithmus, D. H. nach 2^2, 2^3,2^4
etc Sekunden?
Ist auch das wiederholen, verwaltet von der server-Seite, so dass, wenn der Arbeitnehmer geschieht, getötet und dann Nächstes Arbeiter, die erzeugt wird, nehmen Sie die Aufgabe wiederholen?
InformationsquelleAutor der Frage Quintin Par | 2012-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
Aufgabe.Anfrage.Wiederholungen
Attribut enthält die Anzahl der versuche, so weit,so können Sie diese zu implementieren exponential backoff:
Um zu verhindern, dass ein Thundering Herd Problemkönnen Sie erwägen, das hinzufügen einer zufälligen jitter zu Ihrem exponential backoff:
InformationsquelleAutor der Antwort asksol
Als der Sellerie 4.2 (noch nicht veröffentlicht) können Sie konfigurieren Ihre Aufgaben die Verwendung einer exponentiellen backoff automatisch: http://docs.celeryproject.org/en/master/userguide/tasks.html#automatic-retry-for-known-exceptions
Werden nicht getäuscht Sie durch die "Neu in version 4.1." Ankündigung im docs, es ist noch nicht veröffentlicht, siehe merge-request
InformationsquelleAutor der Antwort Rupert Angermeier