pyramidでhello world (light weight)

pyramidは、flaskのように、1ファイルで完結する1ファイルアプリケーションを書くことができます。
また、規模の大きな開発のために、複数のモジュールに切り分けて記述することも可能です。

今回は1ファイルでの、pyramidアプリケーションでhello worldを表示するところまでを行います。

agenda

今回作るのは単にhello worldと表示するだけのアプリケーションです。
動的な機能をまったく加えていないので、静的なhtmlを表示するのと何ら代わりがありません。

以下の手順に分けて説明します。

  • install
  • setup
  • coding

install

pip などを使いましょう。
(注意:詳細は後述しますが、現在pipでバージョン指定なしで入るpyramidのバージョンは1.3です。1.3と1.2では、デプロイまわりのコマンドのインターフェイスが異なっています。
ただし、今回の内容(1ファイルアプリケーション)では違いがありません。)

pip install pyramid # 1.3が入る

setup

ファイルを作るだけなのでsetupは特に必要ありません。

coding

以下のようなファイルを作成します。

# helloapp.py
# -*- coding:utf-8 -*-

from pyramid.config import Configurator
from wsgiref.simple_server import make_server
from pyramid.view import view_config
from pyramid.response import Response

@view_config(route_name="hello")
def hello_view(request):
    return Response("hello anyone.")

if __name__ == '__main__':
    # configuration settings
    settings = {}
    # configuration setup
    config = Configurator(settings=settings)
    config.add_route("hello", "/") # hello viewを"/"に割り当てる
    config.scan() #これで設定が有効になる。
    # serve app
    app = config.make_wsgi_app()
    print "localhost:4567"
    server = make_server('0.0.0.0', 4567, app)
    server.serve_forever()

少しだけ上のファイルの説明をします。

  • hello_viewというview関数(view callable)を定義してます。
    • 単に"hello anyone"というhtmlを返すだけの関数です。
    • view_configでhelloというroute_nameをつけています。
  • __main__の中で、config.add_routeを行い"/"というパスにhello_viewを紐つけてます
    • この時点では、設定は有効になっていません
  • config.scan()を呼び出し設定を有効にしています。

このアプリケーションを起動する方法は、通常のpythonスクリプトを起動するのと同様にpythonコマンドに渡してあげるだけです。

$ python helloapp.py 
localhost:4567
localhost - - [14/Jan/2012 17:01:48] "GET / HTTP/1.1" 200 13
localhost - - [14/Jan/2012 17:01:48] "GET /favicon.ico HTTP/1.1" 404 164
localhost - - [14/Jan/2012 17:01:48] "GET /favicon.ico HTTP/1.1" 404 164

next

公式ドキュメントにも1ファイルアプリケーションのチュートリアルがあります。参照してください。
http://docs.pylonsproject.org/projects/pyramid_tutorials/en/latest/single_file_tasks/single_file_tasks.html