Ich versuche Sellerie zu verwenden, um Hintergrundaufgaben zu behandeln. Im Moment habe ich die folgende Einstellung:Python Sellerie Teilaufgabe Gruppe nicht ausgeführt
@app.task
def test_subtask(id):
print('test_st:', id)
@app.task
def test_maintask():
print('test_maintask')
g = group(test_subtask.s(id) for id in range(10))
g.delay()
test_maintask
geplant wird alle n Sekunden auszuführen, was funktioniert (ich sehe die print-Anweisung in der Kommandozeilen-Fenster erscheinen, wo ich die Arbeiter gestartet). Was ich versuche zu tun, ist diese geplante Aufgabe spawnen eine Reihe von Teilaufgaben, die ich hier mit group()
gruppiert habe.
Es scheint jedoch, als ob keine der test_subtask
Aufgaben ausgeführt werden. Was mache ich falsch? Ich habe keine Timing-/Ergebnisbeschränkungen für diese Teilaufgaben und möchte nur, dass sie asynchron in einer bestimmten Reihenfolge ablaufen. n Sekunden später wird test_maintask
erneut (und wieder) ausgelöst, aber keiner der Teilaufgaben wird ausgeführt.
Ich verwende einen Arbeiter, einen Beat und AMQP als Broker (auf einem separaten Rechner).
BEARBEITEN: Für was es wert ist, scheint das Problem rein wegen einer Aufgabe zu sein, die eine andere anruft (und nicht etwas wegen der Hauptaufgabe, die geplant wird). Wenn ich die Hauptaufgabe manuell aufrufen:
celery_funcs.test_maintask.delay()
Ich sehe die print-Anweisung Hauptaufgabe aber - wieder - nicht die Subtasks. Der Aufruf eines Unterauftrags direkt aber funktioniert:
celery_funcs.test_subtask.delay(10)