J'utilise celerybeat pour lancer une tâche primaire qui déclenche un certain nombre de tâches secondaires. Les deux tâches sont déjà écrites.
Existe-t-il un moyen de le faire facilement ? Celery permet-il d'exécuter des tâches à partir d'autres 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é depuis celerybeat, mais provoque une IOError lorsqu'il essaie d'exécuter apply_async
. Des idées ?
0 votes
celeryproject.org/docs/userguide/tasksets.html
0 votes
Peut-on donner un coup de pied à un ensemble de tâches à partir d'une tâche ?
7 votes
Les tâches et les ensembles de tâches peuvent être appliqués depuis l'intérieur d'une tâche, mais vous ne devez jamais attendre leurs résultats (cf. docs.celeryproject.org/en/latest/userguide/ )
0 votes
Quelle est la solution ?