2012-03-26 9 views
1

wir machen einige verrückte Spaß Sachen mit Django-Sellerie. Ein paar unserer Aufgaben brauchen eine Weile, und wir möchten sie ihre Sache machen lassen. Ich habe versucht, CELERYD_TASK_TIME_LIMIT auf einen großen Wert wie 86400 (24 Stunden) zu setzen, und dennoch melden meine Aufgaben TimeLimitExceeed nach 5 Minuten. Ich habe die Dokumente öfter gelesen, als ich mich erinnern möchte, aber ich kann nichts finden, das auf einen Standardwert für CELERYD_TASK_TIME_LIMIT oder einen Maximalwert verweist.maximaler (cap) Wert für CELERYD_TASK_TIME_LIMIT?

Zwei wirklich wertvollen Fragen für uns:

  1. Was ist der maximale Wert für CELERYD_TASK_TIME_LIMIT? (momentan scheint es 5 Minuten oder 300 zu sein)
  2. Warum kann ich CELERYD_TASK_TIME_LIMIT nicht auf None setzen? (Ja, ich bin ziemlich sicher, dass ich die Auswirkungen von potenziellen Zombie Arbeiter verstehen)

In settings.py

CELERYD_TASK_TIME_LIMIT = 86400 #24 hours 
CELERYD_TASK_SOFT_TIME_LIMIT = 86400 
+0

als Follow-up, hier ist das Arbeiter-Protokoll für eine bestimmte Aufgabe: '[2012-03-26 18: 32: 00.025: INFO/MainProcess] Job vom Broker erhalten: asynch_periodic_update [e3a41c84-f070-4c68-a822-0a223efe1a42] [2012-03-26 18: 37: 00: 403: ERROR/MainProcess] Aufgabe asynch_periodic_update [e3a41c84-f070-4c68-a822-0a223efe1a42] ausgelöst Ausnahme: TimeLimitExceeded() ' –

+0

Es stellte sich heraus, dass es sich um einen falschen Alarm handelte. Unser Skript zum Start von Mitarbeitern wurde mit einem "Zeitlimit" -Argument von 300 Sekunden (also den fünf Minuten) übergeben. Vielleicht wird meine Unfähigkeit, dieses übergeordnete Argument zu finden, helfen, jemand anderen auf eine ähnliche Lösung hinzuweisen. –

+0

Ich bin in einem ähnlichen Problem. Soweit ich weiß, führen wir kein Zeitstreit. Ich setze CELERYD_TASK_TIME_LIMIT in den Einstellungen auf 86400, aber ich bekomme immer den TimeLimitExceed: 300s Fehler. – dannyroa

Antwort

1

Um Ihre Frage zu beantworten Standardwerte ... die Standardeinstellungen für CELERYD_TASK_TIME_LIMIT und CELERYD_TASK_SOFT_TIME_LIMIT sind beide None. Diese Werte sind nicht dokumentiert, und ein einfacher Grep der Codebasis wird dir auch nicht viel helfen. Ich alle Werte der App angemeldet mich .conf, um herauszufinden:

>>> import celery 
>>> app = celery.Celery() 
>>> app.conf