2012-01-27 51 views
3

有沒有辦法確定一組Google App Engine任務(及其產生的子任務)何時完成全部有沒有辦法知道一組應用程序引擎任務隊列任務已完成?

假設我有100個任務要執行,其中10個產生了10個子任務。這是200個任務。我們還要說,這些子任務可能會產生更多的任務,遞歸等...

有沒有一種方法來確定何時完成所有任務?我嘗試過使用應用程序引擎管道API,但它看起來並不像我的特殊用例那樣,即使它是一個很棒的API。

我的使用案例是,我想製作一大堆速率有限的URL獲取調用,同時寫入一個blob。在所有網址抓取調用結束時,我想完成blob。

我找到了使用管道API的解決方案,但是它向數據存儲寫了很多內容,以至於我無法經常需要運行管道,從而降低成本。

+0

你已經看過Fantasm了嗎?文章中有一個有趣的部分描述了fanning:http://code.google.com/appengine/articles/fantasm.html#in,並且您能預測提前產生的任務數量嗎? – proppy 2012-01-27 01:10:47

+0

嗨特普皮,謝謝你。我的例子是粉絲之一,你提到的fantasm文章談論使用粉絲進行優化計數操作。這可能會派上用場,但我不知道我的特定用例事件的數量,所以我想這意味着我必須做某種遞歸計數。我希望有人能夠讓我遠離這一點。 – 2012-01-27 04:32:37

+0

您是如何確定管道API不符合成本效益的?數據存儲的寫入很便宜,特別是在不需要索引的情況下。 – 2012-01-27 04:47:22

回答

1

沒有辦法寫入某種持久性存儲介質,而數據存儲是鎮上唯一的遊戲。您可以編寫自己的服務器來使用後端跟蹤完成情況,但這對於簡單的任務來說是一個非常大的開銷。使用管道API是你最好的選擇。

+0

我很好,寫入數據存儲區。如果它意味着API將爲90-120個作業寫入5K大型實體到數據存儲區,那麼我不會使用管道API執行此操作。我不確定我的代碼是否已優化。我甚至不確定是否正確使用管道API。我已經從代碼上的項目維護者那裏得到了幫助,雖然我不能說所有的用例都是這樣執行的,但這是我在我的經歷中遇到的。 $ 90爲90-120的URL提取和所有的數據存儲會計隨之而來(5K +大實體正在寫入) – 2012-01-27 11:20:19

+0

@JohnWheeler我真的很驚訝於此。實體的性質是什麼?我想不出有什麼理由需要像那麼多實體一樣,或者爲什麼他們會「大」。 – 2012-01-27 22:47:25

+0

這是我運行管道4次的結果。每個管道調用最終完成大約90-120個工作。 http://i.imgur.com/jigBP.png - 讓我知道你是否有興趣看到任何具體的東西。 – 2012-01-27 23:37:26

相關問題