J'utilise celerybeat pour lancer une tâche principale qui débute d'un certain nombre de tâches secondaires. J'ai déjà écrit les deux tâches.Céleri tâche qui exécute plus de tâches
Y at-il un moyen de le faire facilement? Est-ce que Celery permet d'exécuter des tâches depuis des tâches?
Mon exemple:
@task
def compute(users=None):
if users is None:
users = User.objects.all()
tasks = []
for user in users:
tasks.append(compute_for_user.subtask((user.id,)))
job = TaskSet(tasks)
job.apply_async() # raises a IOError: Socket closed
@task
def compute_for_user(user_id):
#do some stuff
compute
est appelée à partir celerybeat, mais provoque une IOError quand il tente d'exécuter apply_async
. Des idées?
http://celeryproject.org/docs/userguide/tasksets.html – bdd
peut être un taskset lancé à partir d'une tâche? –
Les tâches et les ensembles de tâches peuvent être appliqués à partir d'une tâche, mais vous ne devriez jamais attendre leurs résultats (voir http://docs.celeryproject.org/en/latest/userguide/tasks.html#avoid-launching-synchronous-subtasks) – asksol