sugeruje, że nie jest dobrym pomysłem, aby zadania czekały na wyniki innych zadań ... Ale sugerowane rozwiązanie (patrz "dobry" nagłówek) pozostawia coś do życzenia. W szczególności nie ma jasnego sposobu na uzyskanie wyniku podzadania z powrotem do osoby dzwoniącej (również jest to trochę brzydkie).Python + Seler: Chaining jobs?
Czy istnieje sposób "łączenia" zleceń, aby dzwoniący uzyskał wynik ostatniej pracy? Na przykład, aby użyć przykładu add
:
>>> add3 = add.subtask(args=(3,))
>>> add.delay(1, 2, callback=add3).get()
6
Naprzemiennie jest to OK, aby powrócić do wystąpień wynik? Na przykład:
@task
def add(x, y, callback=None):
result = x + y
if callback:
return subtask(callback).delay(result)
return result
To pozwoli wynikiem „ostatecznego” pracy w sieci może być retrived z prostym:
result = add(1, 2, callback=add3).delay()
while isinstance(result, Result):
result = result.get()
print "result:", result
Co proponujecie będzie działać prawidłowo. Nie widzę żadnej alternatywy, prawda? – asksol