Celery documentation暗示有任務等待其他任務的結果是一個壞主意......但建議的解決方案(請參閱「好」標題)留下了一些需要的東西。具體而言,沒有明確的方式將子任務的結果返回給調用者(也是很醜陋的)。Python +芹菜:鏈接工作?
那麼,有沒有什麼方法「鏈接」工作,所以調用者獲得最終工作的結果?例如,使用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
這將讓該鏈中的「最終」工作的結果可以用一個簡單的被retrived:
result = add(1, 2, callback=add3).delay()
while isinstance(result, Result):
result = result.get()
print "result:", result
什麼你建議將正常工作。我沒有看到任何其他的選擇,是嗎? – asksol 2010-10-11 08:55:31