2017-08-20 2 views
0

Ich habe einige Sellerie Aufgaben und ich überprüfe ihre Zustände regelmäßig von einem separaten Prozess durch die Instantiierung eines AsyncResult mit der Task-ID.Sellerie Aufgabenanzeige Name

Von diesem bekomme ich den Aufgabenstatus. Durch Implementierung eines benutzerdefinierten Ergebnis-Backends und einer erweiterten AsyncResult-Klasse wie beschrieben here, kann ich auch den Namen der Aufgabe abrufen. Ich möchte jedoch einen benutzerdefinierten Anzeigenamen für jede Aufgabe erhalten - etwas, das von Menschen lesbar ist, damit ich die Statusinformationen benutzerfreundlich anzeigen kann.

Hypothetisch könnte es eingestellt werden, so etwas wie:

@app.task() 
def my_task(args): 
    display_name = "My Task" 
    ... 
    ... 

Dann später würde ich tun ...

result = ExtendedAsyncResult(task_id) 
result.display_name 

Aber aus auf dem benutzerdefinierten Ergebnisse Backend ich auf der Suche verknüpft, doesn dort‘ Es scheint keine Möglichkeit zu geben, auf die lokalen Variablen der Aufgabe zuzugreifen.

Gibt es eine Möglichkeit zu erreichen, wonach ich suche?

Antwort

1

Sellerie Unterstützung Aufgabenname - hoffe, das ist, was Sie suchen:

@app.task(name='My Task') 
def my_task(args): 
    ... 
    ... 

die My Task wird nun angezeigt, wo Sie (in der Blume zum Beispiel) werden soll.

+0

Danke ... das sollte wahrscheinlich die Antwort sein. Ich habe vergessen zu erwähnen, dass ich es ausprobiert habe, aber (a) es bricht meine Aufgaben (nicht sicher warum - sie werden einfach nicht mehr laufen, wenn ich 'Name' setze), und (b) ich war mir nicht sicher, ob es sicher ist benutze Leerzeichen usw. in solchen Namen (auch wenn ich es zur Arbeit bringen könnte). Die Dokumentation zeigt mehr Variablen-ähnliche Namen in allen Beispielen. Es verbietet nicht ausdrücklich etwas, solange die Namen einzigartig sind, aber ich bin mir nicht sicher. –

+1

Interessant. Eigentlich benutze ich den Namen mit Unterstrichen (und nicht Leerzeichen), aber soweit ich mich erinnere, sollte es auch mit Leerzeichen funktionieren. Wie auch immer, bitte update, wenn du Erfolg hast, und stimme bitte zu, wenn es dein Problem löst :-) – ItayB

+1

Ich fand heraus, was falsch war, und es war meine Schuld. Es gab einen benutzerdefinierten Aufgaben-Router, der Aufgaben ignorierte, die kein bestimmtes Präfix hatten. Sobald ich mich darum gekümmert habe, funktioniert die Lösung hier perfekt. –

Verwandte Themen