我有每一個實例被加載時服務我一個空白頁AppEngine上的問題。 這是一個類似的問題已經覆蓋here,但是,有沒有提到建設性的解決辦法,這將有助於我的情況。AppEngine在第一個請求上提供空白頁面 - 第一個和後續實例負載之間有什麼區別?
由於有在控制檯中沒有錯誤,這一次似乎是非常難調試,我真不知道該如何下手。我沒有在前面的文章中提到的解決方案,因爲我不想重命名我的任何文件,並且希望保持現在的代碼組織。
最後,問一個更廣泛的問題 - 就是第一和後續請求的每個實例的處理有什麼區別?開發人員應該注意什麼嗎?
那麼到底發生了什麼 - 如果AppEngine上的代碼加載的第一次,我得到一個空白頁。每一個後續的請求都很好。我想我的代碼所需的全部零件那裏,以防萬一,這裏是來自app.yaml中(也,應用程序使用python27作爲一個平臺)的處理程序:
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /fb/.*
script: fbhandler.py
- url: /xarpc/.*
script: xmlrpchandler.py
- url:/
script: main.py
- url: .*
script: main.py
有問題的處理程序是fbhandler.py。
def main():
application = webapp.WSGIApplication([("/fb/", FBHandler)], debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
如果我檢查的AppEngine日誌,我看到這對 「空白」 的要求:
2012-05-07 10:43:14.822 /fb/?id=341108955956205 200 2998ms 0kb Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
95.23.245.xx - - [07/May/2012:03:43:14 -0700] "POST /fb/?id=xxx HTTP/1.1" 200 0 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19" "xxx.appspot.com" ms=2999 cpu_ms=563 api_cpu_ms=0 cpm_usd=0.015744 loading_request=1 instance=00c61b117cb0ca2fc61adc3939c4bd034dfa416f
I 2012-05-07 10:43:14.822
This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.
與此相比,任何良好的後續請求:
2012-05-07 10:44:05.479 /fb/?id=341108955956205 200 832ms 0kb Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
95.23.245.xx - - [07/May/2012:03:44:05 -0700] "POST /fb/?id=xxx HTTP/1.1" 200 483 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19" "xxx.appspot.com" ms=832 cpu_ms=1272 api_cpu_ms=1078 cpm_usd=0.035497 instance=00c61b117cb0ca2fc61adc3939c4bd034dfa416f
,你可以看到,沒有任何明顯的錯誤消息。
更新: 經建議,我已刪除在main(),試圖排除緩存,現在的處理程序是這樣的:
application = webapp.WSGIApplication([("/fb/", FBHandler)], debug=True)
util.run_wsgi_app(application)
同樣的效果,首先擔起空白頁和後續加載獲取正確的數據。我注意到,不管是否上傳新代碼,如果一個實例正在運行,並且我更新了代碼,它會在第一次加載時正確顯示。我需要進入實例管理員並關閉一個重現錯誤。
更新2: 我現在試圖改變處理新python27方式:
- url: /fb/.*
script: fbhandler.app
而且也相應變化的fbhandler
import webapp2
app = webapp2.WSGIApplication([("/fb/", FBHandler)])
再次,同樣的問題。我也嘗試刪除調試參數沒有效果。
是否有機會將app.yaml更改爲支持py27的直接指定應用程序的方式,而不是腳本文件,例如, script:myapp.app? 如果是這樣,你也加載主()(你不需要),我相信你可以看到這種行爲。 –
嗨 - 我現在已經把它改成python27-way,仍然是同樣的行爲。還有一件事 - 我正在使用'threadsafe:false',這可能是一個因素嗎? – petr