概要: 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 Engine のdev_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 Engine も Python も WSGI も完全初心者状態で書いてたので、 ここまでたどり着くのにはそれなりに時間がかかったのですが、 まあ書いてみたら案外たいしたこと無かったというオチでした。 まあでもちゃんと動いたときはちょっと感動しましたヨ。
ちなみに WSGI に沿った関数を動かすにはこんな感じですが、 これがクラスの場合だとどうなるのかサッパリ分かってません>< ま、コレはこれから Python の学習や Google App Engine のアプリケーションのコード書いていけば分かってくるかと思いますが。
とりあえず今日はみょーなテンションでこの記事を書いてますが、これで書きたかったことは以上です。 というわけで Google App Engine 上でシンプルな WSGI Application を動かしたよ!というメモでした。