AppEngine PythonでとてもシンプルなWSGI Applicationを動かす
こんにちま!いつも心にwhile True: pass!悪い意味でパソコンが恋人、岡村直樹(22)です。
書き出しの部分をファウストで連載してるユヤタンの人生・相談のパk……じゃない、
パロディで始めてみました。みなさんゴリュゴリュとコード書いてますか?
……というわりと書くのだけは楽しげな事は置いといて、 最近というか前にGoogle App Engineの記事を書いてから、 初めての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を動かしたよ!というメモでした。