最新的Google App Engine版本支持Python中的新Task Queue API。我正在比較此API的功能與現有的Cron service。對於非用戶啓動的後臺作業,例如抓取RSS提要並按日間隔解析它。可以並且應該將Task Queue API用於非用戶發起的請求,例如這種情況嗎?Google App Engine - 任務隊列與Cron Jobs
48
A
回答
24
我會說「排序」。關於任務隊列要記住的事情是:
1)每分鐘/小時/天的操作限制與定期重複某些操作的限制不同。即使將令牌桶大小設置爲1,我也不認爲您可以保證這些重複會均勻分佈。這取決於他們認爲隊列實現爲令牌桶時的嚴重程度,以及該語句是否應該是界面的保證部分。這是實驗室,沒有任何保證。
2)如果一個任務失敗,那麼它被重新排序。如果一個cron作業失敗,那麼它會被記錄並且不會重試,直到它再次到期。因此,cron作業的行爲方式與添加自身副本然後刷新Feed的任務不同,或者作爲刷新Feed的任務,然後添加自己的副本。
使用任務模擬cron作業很可能是可能的,但我懷疑它是值得的。如果你正在努力解決一個需要30秒以上運行的cron作業(或者其他請求限制),那麼你可以將作品分成幾部分,並且有一個cron作業,將所有作品添加到任務隊列。有一些關於異步urlfetch的討論(在GAE博客中),這可能是更新RSS源的最佳方式。
5
我看待它的方式是,如果我只是解析一個RSS源,Cron作業可能就足夠好了。如果我必須解析用戶或任何其他系統變量在運行時指定的X個RSS源,那麼我將每次選擇任務。
我只是這樣說,因爲在過去,我不得不定期執行許多用戶定義的twitter搜索和Cron作業。我結束了一個非常糟糕的排隊系統來執行需要運行的請求 - 它沒有執行任何操作,噸的規模,它沒有幫助,而且一個cron工作的最小間隔只有1分鐘(我在一天中的搜索時間比分鐘多)。
關於任務的很酷的事情是你可以給他們一個ETA,所以你可以說我希望將來會執行47秒,或者我希望在12:30執行。
15
相關問題
- 1. Google App Engine - Cron或任務隊列?
- 2. Google App Engine,任務隊列
- 3. Google App Engine任務隊列
- 4. GWT上的Google App Engine任務隊列
- 5. Google App Engine任務隊列後端Python
- 6. Google App Engine任務隊列錯誤
- 7. 如何替換Google App Engine任務隊列上的任務?
- 8. App Engine cron使用哪個任務隊列?
- 9. Google App Engine Cron PHP
- 10. Google App Engine Python Cron
- 11. Google App Engine - 任務隊列名稱和事務
- 12. 谷歌App Engine任務隊列
- 13. Google App Engine任務隊列獲取統計失敗
- 14. Google App Engine:如何使用任務隊列進行此處理?
- 15. Google App Engine中任務隊列的時間限制
- 16. 在Google App Engine中禁用任務隊列重試
- 17. 如何獲取Google App Engine任務隊列失敗的通知
- 18. Google App Engine:確定當前請求是否爲任務隊列
- 19. 測量Google App Engine中的任務隊列成本
- 20. 使用Python API的Google App Engine任務隊列錯誤
- 21. 檢查Google App Engine中任務隊列的狀態
- 22. Google App Engine Python Cron Job
- 23. 是否可以在Google App Engine任務隊列中執行任務?
- 24. 如何使用Google App Engine任務隊列以(FIFO)順序執行任務?
- 25. 使用Google App Engine隊列服務與Django
- 26. 處理與Spring和App Engine的任務隊列
- 27. Google任務隊列JSON API事務
- 28. Google App Engine中的延遲隊列
- 29. Google App Engine上的Laravel隊列
- 30. Google App Engine通道API消息隊列
異步網址抓取存在的今天,看到http://code.google.com/appengine/docs/python/urlfetch/asynchronousrequests.html - 但我不知道它是如何將是更新RSS源的最佳最佳方式;也許你有其他想法? – 2009-06-22 17:52:05