Ich möchte eine periodische Aufgabe mit Sellerie dynamisch am Ende einer anderen Gruppe von Aufgabe planen.Sellerie - Periodische Aufgabe am Ende einer anderen Aufgabe planen
Ich weiß, wie (statisch) periodische Aufgaben mit Sellerie erstellen:
CELERYBEAT_SCHEDULE = {
'poll_actions': {
'task': 'tasks.poll_actions',
'schedule': timedelta(seconds=5)
}
}
Aber ich will dynamisch aus meiner Aufgaben periodische Arbeitsplätze schaffen (und haben vielleicht eine Möglichkeit, diese periodischen Jobs zu stoppen, wenn eine bestimmte Bedingung ist erreicht (alle Aufgaben erledigt)
Etwas wie:.
@celery.task
def run(ids):
group(prepare.s(id) for id in ids) | execute.s(ids) | poll.s(ids, schedule=timedelta(seconds=5))
@celery.task
def prepare(id):
...
@celery.task
def execute(id):
...
@celery.task
def poll(ids):
# This task has to be schedulable on demand
...