GAE を Python2.7 にマイグレーションする

GAE デプロイでエラー

久々に、GAE触った。

最新のSDKとPyDevで簡単なアプリケーションをつくって、ローカルPCで動作確認して、デプロイしたら、

A version of this application is using the Python 2.5 runtime, which is deprecated!

こんなエラー。

ログを見ると、webapp2 が見つからないらしい。

: No module named webapp2 Traceback (most recent call last): File "/base/data/home/apps/s~typea-ad/1.368874240100654578/typea_ad.py", line 3, in import webapp2

うーん。Python2.7 でつくっているつもりなのに。。。

gae_py27_01

と、https://developers.google.com/appengine/docs/python/python25/migrate27  を見ると、どうやら、Python2.7 でアプリを作成するには、いくつか対応しなければいけないらしい。

細かいことは、おいといて、とりあえず動くように

app.yaml の修正

以下の3点を修正

  1. runtime を python –> python27 に変更
  2. threadsafe 行を追加
  3. script: myapp.py – > myapp.app
application: typea-ad
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /.*
  script: myapp.app

アプリケーションの修正

WSGIアプリケーションの作成

上記で、myapp.py –> myapp.app に修正したのは、myapp.py のなかでグローバルスコープに置かれたWSGIアプリケーション app を実行するという記述のため、app という 名前で、webapp2.WSGIApplication を作成する。

def main() の削除

今までのコードを削除

# -*- coding:utf-8 -*-
import logging
import webapp2
from handler import amazon_handler

logger = logging.getLogger('Main')

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.redirect('/am')

app = webapp2.WSGIApplication([
    ('/',  MainPage),
    ('/am', amazon_handler.AmazonAd),
    ], debug=True)

""" 以下を削除
def main():
  run_wsgi_app(app)

if __name__ == '__main__':
  main()
"""

と、ここまでやって、再度デプロイしたら、無事動作するようになりました。

webapp2

ちなみに、webapp2  については、http://webapp-improved.appspot.com/ を参照するとよいです。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です