我使用deferred
將任務置於AppEngine應用的默認隊列中,類似於this approach。AppEngine任務隊列API調用在TaskAlreadyExistsError上增加
我使用每5秒更改一次的時間戳命名任務。在那段時間內,很多電話都是以相同的名字進入隊列,導致TaskAlreadyExistsError
沒有問題。問題是,當我檢查配額時,「任務隊列API調用」對於每次調用都在增加,而不僅僅是那些實際被放入隊列中的調用。
如果你看看配額我的意思是:Task Queue API Calls: 34,017 of 100,000
,並比較實際的隊列中的呼叫:/_ah/queue/deferred - 2.49K
這裏是處理隊列中的代碼:
try:
deferred.defer(function_call, params, _name=task_name, _countdown=int(interval/2))
except (taskqueue.TaskAlreadyExistsError, taskqueue.TombstonedTaskError):
pass
我想這是它的方式作品。有配額解決問題的好方法嗎?我可以使用memcache來存儲task_name
,並檢查除上述try/catch之外是否添加了任務嗎?或者有沒有辦法檢查任務是否已經存在,而不使用任務隊列API調用?
嗯,有趣的事例。我可能會嘗試,但我可能會選擇memcache解決方案。不管怎麼說,還是要謝謝你! – Ragnar