2007年10月04日
Python | Django エラー通知とsettings.py
Django の設定 : Django 0.96 オンラインドキュメント和訳電子メールによるエラー通知
サーバのエラー
DEBUG を False にすると,コードが例外を送出し,その例外が捕捉されず,結果的に 500 エラーになった場合に, Django は ADMINS 設定にリストされている全てのユーザにメールを送信します.これは,管理者が何らかのエラーにすぐに気づけるようにするためです.
Djangoで稼働するサイトを運用環境下において初めてこの機能を知った。これは便利。
settings.pyについてperezvonさんが書いていたけど、僕のやり方は環境変数に「DJANGO_RUN_MODE」を指定して、settings.pyの中で環境別に差分のsettings.pyを読み込む形です。ちょっとRailsを意識したんだけど、無駄に複雑な気もする。このsettings.pyの管理方法はまだ模索中。
RUN_MODE = os.getenv('DJANGO_RUN_MODE', 'local').lower()
if RUN_MODE == 'local':
DEBUG = True
TEMPLATE_DEBUG = DEBUG
else:
DEBUG = False
# (省略) 環境に共通の設定
# 環境別のsettings.pyをインポート
if RUN_MODE == 'development': from config.development.settings import *
elif RUN_MODE == 'production': from config.development.settings import *
else: from config.local.settings import *
大元のsettings.pyの設定値は後からインポートした環境別のsettings.pyで定義された同名変数の値で上書きされないことに注意。
Apache + mod_python環境ではSetEnvで環境変数を設定。
<Location />
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE project.settings
... 省略
SetEnv DJANGO_RUN_MODE development
</Location>
Comment