お気に入り | 日本語 | ログイン

Python 開発用サーバー

App Engine Python SDK に付属している Web サーバー アプリケーションをお使いのコンピュータで実行すれば、App Engine Python ランタイム環境で実行されるアプリケーションのシミュレーションを行うことが可能です。シミュレーションされた環境では、システム機能や Python モジュール インポートの制限など、サンドボックスに一部の制限が適用されますが、リクエスト タイムアウトや割り当てには制限はありません。サーバーでは、タスクをローカルに実行してサービスのシミュレーションも実行します。

開発用 Web サーバーの実行

アプリケーションのディレクトリと app.yaml 設定ファイルがあれば、dev_appserver.py コマンドで開発用 Web サーバーを開始できます。

dev_appserver.py myapp

デフォルトでは、Web サーバーはポート 8080 でリッスンします。http://localhost:8080/ でアプリケーションにアクセスできます。

Web サーバーが使用するポートを変更するには、--port オプションを使います。

dev_appserver.py --port=9999 myapp

Web サーバーを停止するには、Windows の場合はコマンド プロンプト ウィンドウで Ctrl + Break キー を押します。Mac OS X または Unix では、Ctrl+C キーを押します。

Web サーバーは、実行中にファイルに加えられた変更を検出し、必要に応じてファイルを再読み込みします。ほとんどの変更は、ファイルを編集してブラウザでウェブページを再読み込みするだけですが、アプリケーションが動的インポートを行った場合など、特定の状況においては、Web サーバーを再起動してモジュール インポートのキャッシングをリセットすることが必要な場合があります。

dev_appserver.py を実行する場合は必ず Python 2.5 を使用してください。Python 2.4 でも動作しますが、Python 2.4 と 2.5 には Unicode 文字列の処理などに違いがあり、これが作成したアプリケーションに影響する場合もあります。

データストアの使用

開発用 Web サーバーは、コンピュータのファイルを使用して App Engine データストアをシミュレートします。このファイルは次回 Web サーバーを呼び出すときまで保持されるので、格納したデータを引き続き使用できます。

アプリケーションのローカル データストアをクリアするには、Web サーバーを開始するときに --clear_datastore オプションを使用します。

dev_appserver.py --clear_datastore myapp

Web サーバーを開始すると、使用しているデータストア ファイルの場所が端末にプリントされます。ファイルのコピーを作成して、そのコピーを後で復元してデータストアを既知の状態にリセットできます。データストア ファイルを置き換えたら、Web サーバーを必ず再起動してください。

データストア ファイルに使用する場所を変更するには、--datastore_path オプションを使います。

dev_appserver.py --datastore_path=/tmp/myapp_datastore myapp

アプリケーションがデータストアでクエリを実行するとき、開発用 Web サーバーは、クエリがアプリケーションの index.yaml ファイルでサポートされていることを確認します。クエリで必要なインデックスが index.yaml ファイルにない場合、サーバーは必要なインデックス情報を index.yaml に追加します。テストで使用されていないクエリをアプリケーションが試みる可能性がある場合は、このファイルを編集してください。

データストア ファイルが作成または最後にクリアされた後に作成されたすべてのクエリから index.yaml が生成されます。クエリの履歴は、個別のファイルに保存されます。履歴ファイルの場所を変更するには、--datastore_path オプションと類似する --history_path オプションを使用します。

インデックスと index.yaml について詳しくは、Queries and Indexes および Configuring Indexes をご覧ください。

ユーザーの使用

開発用 Web サーバーは Google アカウントをシミュレートしており、独自のログイン ページとログアウト ページがあります。開発用 Web サーバーで実行中に、users.create_login_url 関数と users.create_logout_url 関数は、ローカル サーバー上の /_ah/login/_ah/logout の URL を返します。

開発用 Web サーバーのサインイン ページには、メール アドレスを入力するフォームがあります。セッションでは、入力したメール アドレスがアクティブなユーザーとして使用されます。

ログインしたユーザーが管理者であるとアプリケーションに認識させるには、 フォームにあるチェックボックスをオンにします。

メールの使用

開発用 Web サーバーでは、呼び出しの際に App Engine のメール サービスにメールを送信することができます。メール サポートを有効にするには、使用するメール サーバーを指定するオプションを Web サーバーに提供する必要があります。Web サーバーは SMTP サーバーを使用することもできますし、ローカルにインストールした Sendmail を使用することもできます。

SMTP サーバーでメール サポートを有効にするには、--smtp_host--smtp_port--smtp_user--smtp_password の各オプションを適切な値で使用します。

dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns myapp

Sendmail でメール サポートを有効にするには、--enable_sendmail オプションを使用します。Web サーバーでは、メール メッセージの送信に、インストール時のデフォルト設定で sendmail コマンドを使用します。

dev_appserver.py --enable_sendmail myapp

SMTP と Sendmail のどちらでもメールが使用できない場合、アプリケーションからメールを送信しようとしても何も起こりませんが、アプリケーションでは成功したように見えます。

URL フェッチの使用

HTTP リクエストを作成するためにアプリケーションで URL Fetch API を使用している場合、開発用 Web サーバーはコンピュータから直接リクエストを作成します。プロキシ サーバー経由でウェブサイトにアクセスしている場合、App Engine でアプリケーションを実行する時とは動作が異なる可能性があります。

注: dev_appserver.py は、一度に 1 つのリクエストのみ提供できます。リクエストの処理中にアプリケーション自体に対して URL フェッチ リクエストが作成される場合、開発用 Web サーバーを使用していると、これらの URL フェッチ リクエストは失敗します(App Engine で実行している場合は失敗しません)。このようなリクエストをテストするには、異なるポートで 2 番目の dev_appserver.py インスタンスを実行してから、アプリケーション自体にリクエストを作成する際に別のサーバーを使用するようにアプリケーションをコーディングします。

開発用コンソール

開発用 Web サーバーには、コンソール ウェブ アプリケーションが含まれます。コンソールを使用すると、ローカル データストアを参照したり、Web フォームに Python コードを送信してアプリケーションと通信できます。

コンソールにアクセスするには、自分のサーバーの URL + /_ah/admin にアクセスします。例: http://localhost:8080/_ah/admin

コマンドライン引数

dev_appserver.py コマンドは、次のコマンドライン引数をサポートしています。

--datastore_path=...

ローカル データストアのデータ ファイルを使用するパス。このファイルが存在しない場合、サーバーで作成されます。

--history_path=...

ローカル データストアの履歴ファイルを使用するパス。サーバーはクエリ履歴ファイルを使用して、index.yaml のエントリを生成します。

--debug

コンソールの実行中に、詳細なデバッグ メッセージをプリントします。

--help

参考になるメッセージを表示してから終了します。

--login_url=...

ユーザーのログイン ページで使用する相対 URL。デフォルトは /_ah/login です。

--port=...

サーバーで使用するポート番号。デフォルトは 8080 です。

--address=...

サーバーで使用するホスト アドレス。ネットワーク上にある別のコンピュータから開発用サーバーにアクセスするには、この設定が必要になる場合があります。0.0.0.0 のアドレスは、ローカルホストとホスト名へのアクセスをどちらも許可します。デフォルトは localhost です。

--clear_datastore

Web サーバーを起動する前に、データストアのデータと履歴ファイルをクリアします。

--require_indexes

index.yaml ファイルへのエントリの自動生成を無効にします。代わりに、ファイルでインデックスを定義する必要のあるクエリをアプリケーションが作成する際にインデックスが見つからなかった場合、例外が発生します。これは App Engine で実行した際に類似しています。

--smtp_host=...

メール メッセージを送信するために使用される SMTP サーバーのホスト名。

--smtp_port=...

メール メッセージを送信するために使用される SMTP サーバーのポート番号。

--smtp_user=...

メール メッセージを送信するために SMTP サーバーで使用されるユーザー名。

--smtp_password=...

メール メッセージを送信するために SMTP サーバーで使用されるパスワード。

--enable_sendmail

ローカル コンピュータにインストールされた Sendmail を使用してメールを送信します。

--debug_imports

モジュールのインポートに関連するデバッグ メッセージをプリントします。これには検索パスとエラーが含まれます。