2017-07-20 4 views
1

considérez le scénario suivant;Ajout de tâches à un groupe ou à un accord existant

Il existe 3 types de tâches différents. A, B et C. A est destiné à produire une entrée pour B et B est censé créer de nombreuses tâches C après avoir reçu une entrée de A.

Au début, je ne peux être en mesure de définir group(A, B) que C s sont exécutés par B. Mais je veux attendre que toutes les tâches C soient terminées afin de conclure que la tâche principale est terminée.

Existe-t-il une façon de faire cela en utilisant les utilitaires de céleri?

Répondre

0

La solution que j'utilise jusqu'à présent attend C tâches à l'intérieur de B.

Quelque chose comme;

from celery.result import allow_join_result 

def B(): 
    tasks = get_c_tasks() 

    g = group(tasks) 
    gr = g.apply_async() 
    with allow_join_result(): 
     return gr.join(propagate=False)