2014-01-28 36 views
0

我想要一個連續運行或每15分鐘運行一次的功能。由於該函數需要更多時間來完成,我需要在後端運行它(不能使用前端)。目前,我在後端運行進程,但可能不是最好的方式。這裏是我的backend.yaml文件:在Google App Engine後端連續運行功能

backends: 
- name: mainframe-backend 
    start: test.py 
    instances: 1 
    class: B2 

我在test.py代碼如下:

while True: 
    time.sleep(X) 
    runcode() 

我不認爲While環是最好的一段路要走。任何幫助?

回答

1

您可能要考慮使用task queue和/或cron tasks來執行此項工作。有幾個優點:

  • 自動重試失敗的嘗試,帶退避/限制 - 你可以自己寫這個,但爲什麼要重新發明輪子?
  • 對於任務隊列,當沒有工作可做,沒有工作正在運行(與您支付它)
  • 用於配置隊列和工作入隊簡單記錄的API - 你可以問SO關於這些問題,有人可以回答他們

如果您擔心請求時間限制(任務隊列處理程序爲10米),您可以在解除此限制的地方使用send tasks to backends

所以一般情況下,我會問是否有可能將工作流程重構爲可利用所提供工具的優勢,以便您不必浪費重複工作或浪費後端處理時間(和你的錢!)與while True