2011-12-19 212 views
0

我正在使用AppEngine的deferred.defer,大致基於this example靜默任務失敗(GAE)

它在我的開發環境中工作正常,但是在我的部署版本中,任務啓動,然後靜默失敗,然後重試。我可以看到在任務視圖中的任務和錯誤的唯一線索是在任務的上次運行選項卡,它說:

最後一個HTTP響應代碼404

enter image description here

但我不知道404是指什麼。

我有傳遞給延期的函數中的logging.info語句,但沒有寫入日誌。我把所有的東西都封裝在try/except塊中,記錄logging.error任何錯誤,但在日誌中仍然沒有顯示。

它看起來像有什麼阻止任務開始,但我不知道什麼。我已經添加了內置在我的app.yaml:

application: xxx 
version: xxx 
runtime: python 
api_version: 1 

builtins: 
- deferred: on 

handlers: 
... 

如何調試呢?

感謝

+0

不能確定它是否重要,但只有這個版本有「遞延」內置,它不是默認版本。 – tom 2011-12-20 00:11:54

+0

向我們展示來自任務的日誌記錄控制檯的日誌條目。 – 2011-12-20 02:55:54

+0

謝謝尼克。我添加了「任務隊列」視圖的圖像。這是我看到錯誤的唯一地方(404)。沒有任何與此任務相關的信息正在寫入日誌。 – tom 2011-12-20 17:46:29

回答

2

原來的任務是想在我的默認版本上運行,即使它正在從一個不同的版本,稱爲(感謝提示,檢查尼克)。

這是一個簡單的修復。當第一次調用推遲我做

version = os.environ['CURRENT_VERSION_ID'].split('.')[0] 
deferred.defer(<fn_name>, <fn_variable>, _target=version) 

感謝

湯姆