我正在創建一個應用程序,該應用程序將創建一個要執行的任務鏈,但鏈會根據用戶對該片添加的願望執行任務。如何在Celery中創建條件子任務鏈?
例如,如果用戶想要start_boo
鏈可能是:
def start_boo():
chain = start_foo.s() | start_bar.s() | start_baz.s()
chain()
但是,如果foo
和baz
已經開始了,我們不希望這樣做;而是寧願是這樣的:
def start_boo(foo=True, bar=True, baz=True):
if not (foo or bar or baz):
raise Exception("At least one should be true...")
chain = None
if foo:
chain |= start_foo.s()
if bar:
chain |= start_bar.s()
if baz:
chain |= start_baz.s()
chain()
start_boo(foo=False, baz=False)
然而,這不會因爲各種原因工作。
有沒有一個習慣做這樣的事情?
對於我的目標,我的理解和我的嘗試,這似乎是一個非常有效的問題。請解釋降價,以便我可以更好地提出問題。 – erip