Wie eine Kette Sellerie Aufgabe, die gibt eine Liste in einer Gruppe?

Ich eine Gruppe erstellen möchten, aus einer Liste zurückgegeben, die von einem Sellerie Aufgabe, so dass für jedes Element im task-Ergebnis-set, ein task wird zu der Gruppe Hinzugefügt.

Hier ein einfaches code-Beispiel, um zu erklären, die use-case. Die ??? sollte das Ergebnis aus der vorherigen Aufgabe.

@celery.task
def get_list(amount):
    # In reality, fetch a list of items from a db
    return [i for i in range(amount)]

@celery.task
def process_item(item):
    #do stuff
    pass

process_list = (get_list.s(10) | group(process_item.s(i) for i in ???))

Ich bin wohl nicht sich das richtig, aber ich bin mir ziemlich sicher, dass es nicht sicher ist zu nennen Aufgaben, die von innen Aufgaben:

@celery.task
def process_list():
    for i in get_list.delay().get():
        process_item.delay(i)

Ich brauche nicht das Ergebnis von Sekunden die Aufgabe.

  • In der Tat, nicht nennen Sie eine Aufgabe aus, eine Aufgabe. Dadurch werden deadlocks vermieden werden. Sagen Sie einem Arbeiter. Sie nennen Ihre Aufgabe, die Bande, bis worker 1, ruft dann eine zweite Aufgabe. Es gibt keine Arbeitnehmer-Prozess, die Aufgabe und alles, was hängen bleiben wird. Diese Bösartigkeit wird leicht besser, wenn Sie Arbeitnehmer, aber man wird immer binden Sie mehrere Mitarbeiter mit einer Aufgabe (und verlieren Parallelität).
InformationsquelleAutor OmerGertel | 2012-11-07
Schreibe einen Kommentar