タグ「GAE/P」に関連する記事

【GAE/P】runtimeをpython2.5から2.7へ更新


MyATNDというアプリを1年ぐらいまえにリリースしました。データの集計にはGAEを利用し、runtimeはPython2.5となっております。ただ、GAEを利用する場合はPythonの最新バージョンは2.7ということで、いつからか忘れましたが、以下のメッセージがずっとGAEの管理コンソール画面に表示されておりました。。

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

これをexcite翻訳にかけると以下になります。

「この適用のバージョンはパイソン2.5ランタイムを使用しています。それが大いに非難されます!」

このアナウンスをこれまでずっと放置してきましたが、過去Googleはさまざまなサービスを容赦なく停止させている実績があるのでそろそろ更新をおこなうことにしました。

(1) app.yamlを更新


まずはアプリケーションの設定をおこなうapp.yamlの編集をおこないます。
※ 以下のURLを参考にしました。

2.5の場合のapp.yaml
2.7の場合のapp.yaml

では、2つのリンクを参考にしながらapp.yamlを編集します。

編集前(2.5対応のapp.yaml)


これは編集前のファイルです。
application: myatnd
version: test
runtime: python
api_version: 1

handlers:

- url: /.*
script: mapping.py


編集後(2.7対応のapp.yaml)


これが編集後のファイルです。編集箇所を赤く塗りつぶしました。
- runtime
 runtimeには「python27」と記述します。
- threadsafe
 2.7からマルチスレッドが利用できるようです。インスタンスの節約になるので、trueとします。
- script
 スクリプトハンドラについては2.5ではファイル名でしたが拡張子を.appに変更するようです。
application: myatnd
version: test
runtime: python27
api_version: 1
threadsafe: true

handlers:

- url: /.*
script: mapping.app


(2) simplejsonのインポートを修正


app.yamlを修正後、試しにデプロイをしてみたのですがエラーが発生しました。ログを調べた結果、simplejsonのインポートが原因でした。存在しないライブラリだということです。2.7に更新する場合は「import simplejson」を「import json」に変更する必要があるみたいですね。

(3) templeteモジュールの対応


2.5から2.7に変更するに当たってdjangoのバージョンも0.96から1.2へと変わっています。何が変わっているかと言いますと、templateモジュールの方で自動的にエスケープ処理がおこなわれるようになりました。2.5のときは自分でエスケープ処理を書いていたので、エスケープ処理したものがされにエスケープされてしまうことになります。ですので、templeteについてはエスケープ処理を無効にすることで対応しました。
こちらのページの「自動エスケープを切るには」という章が参考になります。

以下のように「|safe」を付加することでcontentという変数の値のエスケープ処理を無効化します。
{{blog.content|safe}}


自分の場合は以上の修正だけでアプリは無事動作するようになりました。そして、前述したメッセージも管理コンソール画面から消去されました。これで2.7への更新は完了です。

GAE/P  2013年04月11日 08時04分 

iPhoneアプリを個人で出してます。Python/JavaScriptが大好きです。このブログはGAE/Pythonで作ったオリジナルブログです。
カテゴリ
開発アプリ