2016-06-23 3 views
0

ich einen Sellerie Aufgabe wie folgt definiert sind:Sellerie: wie der Status einer Aufgabe setzen

@app.task() 
def my_task(): 
    # Do things... 

I Blume bin mit, so will ich den Endzustand der Aufgabe sehen, nach einigen Regeln erstellt von mir:

if condition_1: 
     return task_status_success 
    elif condition_2: 
     return task_status_fail 

Wie kann ich das tun?

Ich habe einige Leute gesehen etwas wie folgt aus:

class AbstractTask(Task): 
    abstract = True 

    def __init__(self): 
     self.last_error_log = ErrorLog(logger) 
     Task.__init__(self) 

    def _task_error(self, message): 
     logger.error(message) 
     self.update_state(state=states.FAILURE) 
     raise Exception(message) 

Aber diese Methode scheint Klassen als Aufgaben zu definieren, nicht als Funktionen.

Gibt es Hilfe, wie man den Status einer als Funktion definierten Sellerieaufgabe manuell einstellt?

Antwort

1

die Methode nutzen zu können, sah, dass eine abstrakte Klasse verwendet, müssen Sie nur die Klasse als base zu Ihrem Dekorateur weitergeben müssen:

@app.task(base=AbstractClass, bind=True) 
def my_task(self): 
    pass 

bind=True ermöglicht es Ihnen, self zu verwenden, um die Mitglieder Ihrer Klasse zugreifen .