2012-08-10 10 views
8

Ich habe eine Aufgabe:Sellerie Arbeiter versuchen nicht Aufgabe nach einem erneuten Versuch() aufrufen

@celery.task(name='request_task',default_retry_delay=2,acks_late=True) 
    def request_task(data): 
     try: 
      if some_condition: 
       request_task.retry() 
     except Exception as e: 
      request_task.retry() 

Ich benutze Sellerie mit mongodb Broker und mongodb Ergebnisse Backend aktiviert.

Wenn die retry() -Methode der Task weder von der bedingten Anweisung noch nach dem Abfangen der Ausnahme aufgerufen wird, wird die Task nicht wiederholt.

in das Terminal des Arbeiter ich Nachricht wie folgt aus:

[2012-08-10 19: 21: 54.909: INFO/MainProcess] Aufgabe request_task [badb3131-8964-41b5-90a7-245a8131e68d] wiederholen : Aufgabe kann wiederholt werden

Was kann falsch sein?

UPDATE: Schließlich habe ich diese Frage nicht gelöst und musste While-Schleife innerhalb der Aufgabe verwenden, so dass meine Aufgaben nie wiederholt werden.

+0

Welche Sellerie-Version verwenden Sie? –

+0

@MauroRocco Ich verwendete Sellerie 3.0.4 zur Zeit Frage wurde gestellt. Ich hatte einige Funktionen, die mit Bugs in den Versionen 3.0.4 und 3.0.5 arbeiteten, aber spätere Versionen funktionierten ziemlich gut. – user1039098

+0

Froh, das zu hören.Wenn Sie sich die Frage beantworten und die Auflösung besser erklären können. –

Antwort

1

Sie sollten den Abschnitt zum erneuten Versuch in der Celery-Dokumentation lesen. http://celery.readthedocs.org/en/latest/userguide/tasks.html#retrying

Es sieht so aus, als ob Sie eine Wiederholung versuchen müssen, um es erneut zu versuchen.

raise request_task.retry() 

Das scheint die Wiederholung von der Funktion behandelt werden, die Ihre Aufgabe dekoriert.

Verwandte Themen