カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

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

概要: 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を動かしたよ!というメモでした。