Google App Engine SDK - Python

Python による Google App Engine 開発

Google App Engine (GAE) は Python 2.5 をサポートしています。もしバージョンが違う場合(特に Py3k の場合) は 2.5 を用意しておいた方が良いでしょう。

ちなみに、Pythonのバージョンの確認は次のように -V オプションでできます。

$python -V

Google App Engine SDK for Python

Linuxへのインストール

Google App Engine SDK for Python は zip ファイルとしてGoogleのサイトからダウンロード可能です。 7/23/2011 時点はバージョン 1.5.2 の google_appengine_1.5.2.zip がダウンロードできます。

私の環境は Ubuntu 11.04 ですが上記 zip を ~/google_appengine に展開しました。

動作確認

Python プログラムの準備

それではさっそく、Pythonで簡単なコードを書くことによって、開発環境が動作することを確認しましょう。

まず、helloworld1 という名前のディレクトリを作ります。私は ~/src/test/py/helloworld1 に作りましたが、好きなところに作って構いません。私の環境と違うところに作ったら、以下、パスの部分は読み替えてください。

次に、上で作った helloworld1 内に helloworld.py というファイルを作って、 次の内容を記述します。

print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

次に、同じく helloworld1 内に app.yaml という名前のファイルを作り、次の内容を記述します。

application: helloworld1
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: helloworld.py

これだけでアプリケーション側の準備は完了です!これを SDK の開発サーバー上で実行しましょう。

開発サーバーでの実行

開発サーバーは SDK に含まれるスクリプト dev_appserver.py で実行できます。

dev_appserver.py [アプリケーションルート]

今回の場合 SDK は ~/google_appengine/に、アプリケーションは ~/src/test/py/helloworld1 に作りましたので、 コマンドは次のようになります。

$ ~/google_appengine/dev_appserver.py ~/src/test/py/helloworld1

すると、デフォルトで localhost のポート 8080番で待ち受けを開始します。

私の環境ではコマンドを実行すると次のように表示されました。

$ ~/google_appengine/dev_appserver.py ~/src/test/py/helloworld1
Warning: You are using a Python runtime (2.7) that is more recent than 
the production runtime environment (2.5). Your application may use features 
that are not available in the production environment and may not work 
correctly when deployed to production.
INFO     2011-07-23 17:54:41,513 appengine_rpc.py:159] Server: 
appengine.google.com
Allow dev_appserver to check for updates on startup? (Y/n): Y
dev_appserver will check for updates on startup.  To change this setting, 
edit /home/keisukeo/.appcfg_nag
INFO     2011-07-23 17:54:52,541 appcfg.py:456] Checking for updates to the SDK.
INFO     2011-07-23 17:54:53,428 appcfg.py:473] The SDK is up to date.
WARNING  2011-07-23 17:54:53,428 datastore_file_stub.py:511] Could not read 
datastore data from /tmp/dev_appserver.datastore
INFO     2011-07-23 17:54:53,431 rdbms_sqlite.py:58] Connecting to SQLite 
database '' with file '/tmp/dev_appserver.rdbms'
INFO     2011-07-23 17:54:53,776 dev_appserver_multiprocess.py:637] 
Running application helloworld1 on port 8080: http://localhost:8080

初回実行時には似たようなメッセージになるはずです。

ちなみに、私の環境は Python 2.7 で、Google App Engine の本番環境 (一般的に日本語で言うところの 「本番環境」は "production environment" とか "production server" などと言います) では Python 2.5 なので、本番環境に移行したときに問題が発生するかもしれませんよ。 という旨の注意メッセージが表示されています。

上記のメッセージ内に書いてある通り、SDKの Python 開発サーバーは localhost の 8080 番でリスニングを開始していますので、 ブラウザで http://localhost:8080/ を要求して次のように表示されれば OK です。

Google App Engine SDK for Python