インスタンスが読み込まれるたびに、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)])
繰り返しますが、同じ問題です。また、デバッグ パラメータを削除しようとしましたが、効果はありませんでした。