Windows Azure Web サイトで Python

とりあえず Python を実行する方法。

ConfigurePython.py というファイルを作ります。

ConfigurePython.py
#coding:utf-8

def application(environ, start_response):
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)

    yield 'こんにちは\n'

/site/wwwroot/sample 以下に Python ファイルを置くものとします。ConfigurePython.py を配置。

これだけでは、動かないので……。

Azure 管理ポータルで設定

https://manage.windowsazure.com の Web サイトの「構成」を開き、次の値を設定します。

アプリケーション設定

azure-app-config

キー値
PYTHONPATHD:\home\site\wwwroot\sample
WSGI_HANDLERConfigurePython.application

sample ディレクトリと、ConfigurePython.py の application を指定。

WSGI_LOG と D:\home\site\wwwroot\sample\error.log のように追加すれば、エラーログを出力できます。

ハンドラーマッピング

azure-app-handler

拡張スクリプト プロセッサ パス追加の引数
/sample/*D:\python27\python.exeD:\python27\scripts\wfastcgi.py

/sample/* なので sample 以下のアクセスは全部 ConfigurePython.py の内容が実行されます。

Web.config

Web.config を利用する方法もあります。

Configuring Python with Azure Web Sites(Web アーカイブ)

クエリーを受け取る

sample/?val=Ruby のようにアクセスして値を受け取る

ConfigurePython.py
#coding:utf-8
import cgi

def application(environ, start_response):

    fs = cgi.FieldStorage(environ=environ, fp=environ['wsgi.input'])
    value = fs.getfirst('val', 'Python')

    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)

    yield  'こんにちは {0}\n'.format(value)

WSGI でなんかつくってみる #python_adv — Python Web Framework Advent Calendar 2012 1.0.0 documentation(Web アーカイブ) が参考になりました。