Документация по сельдевому сельскому хозяйству говорит о том, что плохая идея иметь задачи ждать результатов других задач... Но предлагаемое решение (см. хороший "заголовок) оставляет желать лучшего. В частности, нет четкого способа вернуть результат подзадачи обратно вызывающему (также, он вроде уродливый).
Итак, есть ли способ "цепочки" заданий, поэтому вызывающий получает результат окончательной работы? Например, чтобы использовать пример add
:
>>> add3 = add.subtask(args=(3, ))
>>> add.delay(1, 2, callback=add3).get()
6
Альтернативно, нормально ли возвращать экземпляры результата? Например:
@task
def add(x, y, callback=None):
result = x + y
if callback:
return subtask(callback).delay(result)
return result
Это позволило бы получить результат "окончательной" работы в цепочке с помощью простого:
result = add(1, 2, callback=add3).delay()
while isinstance(result, Result):
result = result.get()
print "result:", result