2011-12-12 30 views
2

我們正試圖在Google App Engine中使用新的python 2.7線程功能,看起來創建的線程在完成運行之前就被殺死了。我們的方案:AppEngine python線程能比原始請求持續更久嗎?

  • 用戶將消息發送到服務器
  • 我們更新用戶的數據
  • 我們生成一個線程做一些更多的重型加工
  • 我們等待之前返回給用戶的響應爲重載處理完成

我的假設是線程會在請求返回後繼續運行,只要它沒有超過總請求時間限制。我們看到的是,線程在執行過程中被隨機殺死。沒有例外,沒有錯誤,什麼都沒有。它只是停止運行。

返回響應後是否允許線程存在?這不會在開發服務器上重現,只能在實時服務器上重現。

我們當然可以使用任務隊列來代替,但是這是一個真正的痛苦,因爲我們必須建立一個URL的動作和序列化/反序列化的數據。本頁面

回答

3

Deferred tasks是要做到這一點的方法。你不需要一個URL或序列號來使用它們:

from google.appengine.ext import deferred 
deferred.defer(myfunction, arg1, arg2) 
+0

謝謝,我會試試看。我希望這些東西中的一些在文檔中更明顯。 – DurhamG