mod_wsgiでDjango1.3を使用しています
私の中でsettings.py
DISABLE_SYSTEM = False
DISABLE_USER_INTERFACE = False
MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
]
if DISABLE_SYSTEM:
MIDDLEWARE_CLASSES.insert(0, 'SomeMiddleware')
if DISABLE_USER_INTERFACE:
MIDDLEWARE_CLASSES.append('SomeOtherMiddleware')
に設定DISABLE_SYSTEM
するとTrue
、SomeMiddleware
のprocess_request
関数は警告メッセージを返し、HttpResponse
それに続くMiddewaresはまったく実行されません。それは私にメンテナンスのための一種のシステムシャットダウンを与えます
DISABLE_USER_INTERFACE
フィルタrequest
とユーザーによって呼び出されたすべてのビュー関数はブロックされますが、admin
URLと管理関数は通常どおり実行されます。
これまで、これをさまざまな種類のメンテナンスに使用していました。ファイルから変更し、wsgiをタッチしてPythonモジュールを再ロードするだけです。しかし今、私は一種のスケジュールされたルーチンを使用して、ユーザーベースのリクエストを停止し、バックグラウンドでいくつかのメンテナンスを行い、いくつかは管理者から行う必要があります。
この時点で、iシステム(ユーザーではない)はfromに設定DISABLE_USER_INTERFACE
し、メンテナンスを開始する必要があります。しかし、私はそれを行うためのより適切な方法、またはこれを他の場所からではなくどこかで処理するためのより良い方法を見つけることができませんでした。True
settings.py
settings.py
settings py
変更よりもラインインDISABLE_USER_INTERFACE
は、この関数を1日1回使用する必要があり、リクエストごとにこれら2つのミドルウェアを使用することは私には論理的ではないように思われるためです。したがって、私の現在のモデルでは、実行する必要がある場合にのみ実行されます
任意の提案をいただければ幸いです。
更新:私がやりたいのは、毎日19:00から19:30の間にユーザーインターフェイスを無効にすることです。次のようなミドルウェアレベルのチェックを行うかどうかはわかりません。
if 19:00<now()<19:30:
stop system
すべてのリクエストに対して。不必要なプロセスを回避する、より効率的なものが必要です。それとも、ミドルウェアはその種の作品にとって正しい選択ですか?