我使用Django 1.3設置變量在我settings.py
與mod_wsgi的</p> <p>改變從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
一條警告消息而下面的Middeware不會運行。這給了我一種系統停機維護
DISABLE_USER_INTERFACE
過濾器request
任何用戶稱爲受阻取景功能,同時admin
URL和管理功能正常運行。
到目前爲止,我用這種方法來維護不同的類型,我只是簡單地將它從文件中改爲,然後觸摸wsgi重新加載python模塊。但現在,我需要使用一種預定的例程來停止基於用戶的請求,並對後臺進行一些維護,並從管理員那裏進行一些維護。
在這一點上,我係統(但不是用戶)需要設置DISABLE_USER_INTERFACE
到True
從settings.py
並開始維護。但我無法找到porper的方式來做到這一點或更好的方式來處理這不是從settings.py
而是在別的地方。
settings py
中的行比變化DISABLE_USER_INTERFACE
是因爲我需要每天使用這個函數一次,並且對於每個請求使用這兩個中間件對我來說似乎不合邏輯。所以在我目前的模型中,他們只在需要運行時運行。
任何建議,將不勝感激。
更新:我想要做的是在每天的19:00至19:30期間禁用用戶界面。我不確定如何製作中間件級別檢查:
if 19:00<now()<19:30:
stop system
對於每個請求。我需要更高效的方法來避免不必要的過程。或者中間件是那種作品的正確選擇?
我想要的是在19.00到19.30之間關閉系統,我想寫一箇中間件來檢查每個請求的時間,如果它是維護時間,但是運行一個'if 19.00
FallenAngel
2012-01-05 11:59:35
「但運行一個如果19.00 <現在()<19.30:停止系統控制每個請求似乎是不必要的」。實際上,開銷是無法估量的。但是,這就是爲什麼我建議在已知位置創建文件的原因。 cron可以根據您的時間表創建和刪除此文件。 – 2012-01-05 12:47:49
我想你是對的,這是更好的(: – FallenAngel 2012-01-05 14:08:13