2014-12-19 5 views
1

Например:Два Другие задачи Доля Результат первой задачи

(task_a.s() | task_b.s()) and (task_a.s() | task_c.s()) 

task_b and task_c share the result of task_a. 
  • Как я могу только вычислить task_a только один раз?
  • Могу ли я использовать Workflows для решения этого вопроса?
+0

Пожалуйста, добавьте реальную TITL e на ваши вопросы. – Thomas

+0

Мне любопытно, какая у вас проблема с корнем. То, как вы приближаетесь к этому ИМХО, неверно. 90% времени, если вы ожидаете результата с использованием сельдерея, есть лучший способ задуматься над этим. – user2097159

ответ

0

Используйте переменные для хранения вычисленных значений и использования переменных в условии.

ta = task_a.s() 
tb = task_b.s() 
tc = task_c.s() 
if (ta | tb) and (ta | tc) 
0

Вы можете использовать рабочий сельдерея, используя group примитивно:

Учитывая ваше приложение сельдерея определена и названа приложение, вам придется создать новую задачу, позволяющую сделать and операцию

from celery import group 

@task 
def merge_results(results) 
    return all(results) 

Затем рабочий процесс будет:

(ta.s() | group(tb.s(), tc.s()) | merge_results.s()).apply_async().get() 
Смежные вопросы