2012-04-05 66 views
0

排隊後,我們如何獲得排定執行的推送隊列任務?如何避免任務隊列中的執行延遲

我們是否需要使用Pull Queue來求助於cron作業?

我們在執行等待在我們的推送隊列中的任務時會定期看到非常長的延遲(20分鐘)。我們將在Queue中看到6,000多個任務,沒有執行任何任務,並且在最後一分鐘內沒有執行任務。 然後這些任務最終被安排執行,並且當隊列快速流失時,我們得到一個大的爆發峯值。

作爲一個例子,一個隊列定義看起來像這樣:

<queue> 
    <name>example</name> 
    <target>1</target> 
    <rate>20/s</rate> 
    <bucket-size>40</bucket-size> 
    <max-concurrent-requests>10</max-concurrent-requests> 
    <retry-parameters> 
     <min-backoff-seconds>10</min-backoff-seconds> 
     <max-backoff-seconds>60</max-backoff-seconds> 
     <max-doublings>2</max-doublings> 
    </retry-parameters> 
</queue> 

回答

1

時滯可以與兩個拉入隊列發生和推送隊列。任務隊列提供可靠的任務執行,從不比請求更早,但有時晚於,例如,當從一個數據中心故障轉移到另一個數據中心時。調度是盡力而爲,而不是實時的。

+0

現在我們在推送隊列中看到2小時的延遲。 @Eric - 爲什麼Pull Queue會有延遲?我認爲專用的後端可以根據需要以任意塊的形式工作,而不依賴於GAE任務調度。 – 2012-04-13 05:35:31

+0

@Caster - 即使有Pull Queues,系統也需要跟蹤已添加,租用和刪除的任務。就像主/從數據存儲中的只讀週期一樣,有時候不會發布租約。 – 2012-06-18 12:28:53