[GAE] 初期状態を眺めてみる

前回作成した、Google App Engine Launcher の初期状態のアプリケーションを眺めて理解しようと思います。

前回作成した状態で Parent Directory で指定したフォルダにあるファイルは以下の4つになります。

アプリケーションを Run するとmain.pyc も作成されていると思いますが、これは main.py から自動で作成されたファイルですので今回は関係ありません。

app.yaml

GAE を利用する際に必ず必要なアプリケーションの設定ファイルです。
中身は次の用になっています。

application: python-basic-wsgi
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"
application
アプリケーション固有の識別子です。名前と言ってもいいと思います。
version
アプリケーションのバージョン番号です。
runtime
動作する言語を指定します。python だけだと古いバージョンの Python の環境で動作するので 2.7 を使用するには python27 と指定しなければなりません。
api_version
使用する API のバージョンです。現状は 1 で問題ないようです。
threadsafe
yes で同時リクエストを利用するようになります。
handlers
リクエストされたURLをどのように処理するのかを設定します。

url
リクエストされた url がマッチする場合それ以下の指定に従って処理されます。正規表現を使用します。

static_files
urlにマッチしたものを指定した静的ファイルへのアクセスとして処理します。正規表現を使用します。
upload
Googleのサーバーにアップロードするファイルを指定します。参考
libraries
使用するライブラリを指定します。サードーパーティのライブラリを使用する際にも指定します。

初期設定で設定されている動作は、
http://…/favicon.ico というリクエストがあった場合は /favicon.ico というファイルを参照してください。
アップロードするファイルは favicon.ico です。

それ以外の全てのアクセスは main.app スクリプトを使用して処理してください。(main.app は main.py の app 変数を利用してくださいという意味です。)

という感じになります。

favicon.ico

favicon.ico はアイコンのページのアイコンのようなもので、Chrome だとタブの左に表示されている小さな画像になります。

index.yaml

アプリケーションで利用するデータストアのクエリ使用するインデックスが記述されるファイルです。単純なクエリ用には自動で生成されるので、今はなにも記述する必要はありません。
参考

main.py

これが Hello world! と出力するだけの WSGI アプリケーションのコードが記述されている python スクリプトになります。

import webapp2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello world!')

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True)

MainHandler というリクエストを扱うクラスを定義します。
それを ‘/’ というリクエストの際に使用するという設定の webapp2 の WSGI アプリケーションを app という変数に代入しています。

app という変数に代入しただけで動作しているのは、app.yaml

- url: .*
  script: main.app

と指定しているためです。main.app は main.py の app 変数を利用することになります。

メニュー

[GAE] 初めてのWSGIアプリケーション

参考

http://d.hatena.ne.jp/matsuza/20080413/1208092235
https://developers.google.com/appengine/docs/python/config/appconfig

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です