2012-08-17 79 views
0

芹菜2最後一次,已經完成了,我有成立像下面這樣的taskset的結果:芹菜組只因爲它是檢查

for (item,jobId) in itemsAndJobs: 
    tasks.append(waitForOutput.subtask((jobId,item))) 
job = TaskSet(tasks) 
result = job.apply_async() 

再後來,我會檢查看看上使用taskset已通過檢查完成:

job.ready() and job.successful() 

這個工作精細的waitForOutput任務會慢慢地待着,然後當他們都完成工作檢查將完成。我可以多次檢查,沒有任何問題。

在芹菜3,我試着只是改變

TaskSet(tasks) 

group(tasks) 

這個不斷變化的一組的快速和骯髒的方式,除非我等到所有的waitForOutput任務完成在我檢查準備好和成功之前,這從來沒有奏效。 ready()總是返回false。我加了一些記錄和30秒的默認重試,這就是我見式

  • 開始5 waitForOutput工作
  • 檢查就緒(),沒有waitForOutput工作已經完成,準備爲假
  • 2 waitForOutput作業完成
  • 檢查準備就緒(),準備爲假,job.check_completed()是2
  • 檢查準備就緒(),準備爲假,job.check_completed()爲0
  • 其餘3個waitForOutput作業完成
  • 檢查準備就緒(),準備是假的,job.check_completed()是3

我看到相同的行爲,如果我把我的芹菜3碼和進口taskset的從任務和使用,而不是該組。

我很想被告知我只是不正確地使用羣組!

回答

0

我通過將Redis作爲我的結果後端來解決此問題。這似乎是使用AMQP作爲後端結果的一個錯誤。