Wie kann ich den Wert task_id für eine Aufgabe aus der Aufgabe heraus abrufen? Hier ist mein Code:
from celery.decorators import task
from django.core.cache import cache
@task
def do_job(path):
"Performs an operation on a file"
# ... Code to perform the operation ...
cache.set(current_task_id, operation_results)
Die Idee ist, dass ich beim Erstellen einer neuen Instanz der Aufgabe die task_id
aus dem Aufgabenobjekt abrufe. Ich benutze dann die Aufgaben-ID, um festzustellen, ob die Aufgabe abgeschlossen ist. Ich nicht will von der Spur der Aufgabe halten path
Wert , da die Datei nach dem Ausführen des Tasks wird „gereinigt“, und kann oder auch nicht existieren.
Wie würde ich im obigen Beispiel den Wert von erhalten current_task_id
?
Seit Sellerie 2.2.0 werden Informationen zur aktuell ausgeführten Aufgabe in gespeichert
task.request
(es heißt «der Kontext»). Sie sollten also die Aufgaben-ID aus diesem Kontext abrufen (nicht aus veralteten Schlüsselwortargumenten):@task def do_job(path): cache.set(do_job.request.id, operation_results)
Die Liste aller verfügbaren Felder ist hier dokumentiert: http://celery.readthedocs.org/en/latest/userguide/tasks.html?highlight=requestcontext#context
quelle
Ab Sellerie 3.1 können Sie das
bind
Dekorationsargument verwenden und haben Zugriff auf die aktuelle Anfrage:@task(bind=True) def do_job(self, path): cache.set(self.request.id, operation_results)
quelle