我正在使用带有 mod_wsgi 的 Django 1.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 模块。但是现在,我需要使用一种预定的例程来停止基于用户的请求,并在后台进行一些维护,一些来自管理员。
此时,我的系统(但不是用户)需要设置DISABLE_USER_INTERFACE
为True
从settings.py
并开始维护。但是我找不到更好的方法来做到这一点,或者不是从settings.py
其他地方而是从其他地方来处理这个问题的更好方法。
settings py
比更改中的行DISABLE_USER_INTERFACE
是因为我需要每天使用一次此功能,并且为每个请求使用这两个中间件对我来说似乎不合逻辑。所以在我当前的模型中,它们仅在需要运行时运行
任何建议将不胜感激。
更新:我想做的是在每天 19:00 - 19:30 期间禁用用户界面。我不确定是否要进行中间件级别检查,例如:
if 19:00<now()<19:30:
stop system
对于每个请求。我需要一些更有效的东西来避免不必要的过程。或者中间件是那种作品的正确选择?