Google App EngineはさすがGoogleさん提供のクラウドサービスなだけあって、本番環境に公開したプログラムは非常に高速で動作します。
反面ローカル環境ではデータ量が増えると、起動やアプリケーションのレスポンスが極端に劣化してしまいます。
またFacebookアプリケーションを作成する場合には
ローカル環境と本番環境とで別のAppIdを使いたいですよね。
本番環境にアップロードする度にプログラムを書き換えるのはイヤなものです。
では、どうするか。
答え
setting.py を作成し、os.environ.get("HTTP_HOST", "")でホスト名を取得します。
あとは取得したホスト名ごとに定数を定義すればOK。
以下の例では
- ローカル環境でのみTrueになる IS_LOCAL
- ローカル環境、本番環境、それぞれで使用するFacebookの認証情報(FACEBOOK_APP_ID, FACEBOOK_APP_SECRET)
を定義しています。
setting.py
import os
host = os.environ.get("HTTP_HOST", "")
if(host != "localhost:8080"):
# 本番サーバの設定
IS_LOCAL = False
FACEBOOK_APP_ID = 'xxxxxxxxxx'
FACEBOOK_APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
else:
# ローカルの設定
IS_LOCAL = True
FACEBOOK_APP_ID = 'yyyyyyyyy'
FACEBOOK_APP_SECRET = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
index.py
import setting, facebook
# FacebookのOAuth認証
user = facebook.get_user_from_cookie(self.request.cookies
, setting.FACEBOOK_APP_ID
, setting.FACEBOOK_APP_SECRET)
if setting.IS_LOCAL:
# ローカルでのみ動作させたい処理
doSomethingOnLocal()
『将棋Fun』では、最初ローカル環境でも13000件の棋譜データを使用していたのですが、ちょっとお話にならないくらい起動もレスポンスも遅かったので、ローカル環境でのみ100件のデータで動くように設定しました。
おかげでサクサク快適な開発環境と相成りました。
