カラクリスタ

「輝かしい青春」なんて失かった人のブログ

Google App Engine PythonでとてもシンプルなWSGI Applicationを動かす方法

概要: AppEngine Python でとてもシンプルな WSGI Application を動かす


こんにちま!いつも心にwhile True: pass!悪い意味でパソコンが恋人、岡村直樹(22)です。 書き出しの部分をファウストで連載してるユヤタンの人生・相談のパk……じゃない、 パロディで始めてみました。みなさんゴリュゴリュとコード書いてますか?

……というわりと書くのだけは楽しげな事は置いといて、 最近というか 前に Google App Engine の記事 /post/50799667685 を書いてから、 初めての Python を読み進めてクラスについてのあたりまで読破して、 Google App Engine 用 Application も書けるようになったかな?ということで、 Google App Engine 上ですごくシンプルな WSGI Application を動かせた!ということを記事にしたいと思います。

(前置き長いな……。)

まあそれはいいんだけど、Pythonista にとっては常識かも知れませんが、 僕の理解が間違っていなければ、 WSGI というは Web Server Gateway Interface の略で、 Web Application と Web Server 間の情報のやり取りについてまとめた、 仕様の一種です。(ちなみに Perl で最近になってできた PSGI の仕様は WSGI が元になってます)

で、WSGI Application というのはこの WSGI の仕様に沿った関数またはクラスのことを言うのですが、 (理解が間違っていなければたぶんあってると思う……) 今回は関数で書かれた WSGI Application を Google App Enginedev_appserver.pyで動かしてみたよ! ってのをメモって置きたいと思います。

まあこれはコード書けば早いんですが、WSGI Application を Google App Engine で動かすには下記のようになります:

# wsgi applicationを走らせる関数をインポート
from google.appengine.ext.webapp.util import run_wsgi_app

# とてもシンプルなwsgi application
def application ( environ, start_response ):
start_response('200 OK',  [[('Content-Type', 'text/plain')]] )
return 'hello world!'

# ファイルの実行部分
def main ():
# この関数がwsgi applicationを実行する
run_wsgi_app(application)

if __name__ == '__main__':
main()

解説はまあコメントに書いてあるとおりで、def application( environ, start_response ):WSGI の仕様に沿った関数をつくり、 関数run_wsgi_appで実際に WSGI Application を走らせるという感じです。

まあ最初 Google App EnginePythonWSGI も完全初心者状態で書いてたので、 ここまでたどり着くのにはそれなりに時間がかかったのですが、 まあ書いてみたら案外たいしたこと無かったというオチでした。 まあでもちゃんと動いたときはちょっと感動しましたヨ。

ちなみに WSGI に沿った関数を動かすにはこんな感じですが、 これがクラスの場合だとどうなるのかサッパリ分かってません>< ま、コレはこれから Python の学習や Google App Engine のアプリケーションのコード書いていけば分かってくるかと思いますが。

とりあえず今日はみょーなテンションでこの記事を書いてますが、これで書きたかったことは以上です。 というわけで Google App Engine 上でシンプルな WSGI Application を動かしたよ!というメモでした。

FIXME