【发布时间】:2012-01-04 14:30:45
【问题描述】:
我正在使用带有 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 的警告消息,并且后面的中间件根本不会运行。这给了我一种系统关闭以进行维护
DISABLE_USER_INTERFACE过滤request,用户调用的任何视图函数都被屏蔽,而admin的url和管理函数正常运行。
到目前为止,我用它来维护不同的类型,我只是从文件中更改它并 touch wsgi 以重新加载 python 模块。但是现在,我需要使用一种预定的例程来停止基于用户的请求,并在后台进行一些维护和一些来自管理员的维护。
此时,i系统(而非用户)需要将DISABLE_USER_INTERFACE从settings.py设置为True并开始维护。但是我找不到更好的方法来做这件事,或者不是从settings.py 而是从其他地方找到更好的方法来处理这个问题。
settings py 中的行比更改DISABLE_USER_INTERFACE 是因为我需要每天使用一次此功能,并且为每个请求使用这两个中间件对我来说似乎不合逻辑。所以在我目前的模型中,它们只在需要运行时才运行
任何建议将不胜感激。
更新: 我想做的是在每天 19:00 - 19:30 期间禁用用户界面。我不确定是否要进行中间件级别检查,例如:
if 19:00<now()<19:30:
stop system
对于每个请求。我需要一些更有效的东西来避免不必要的过程。或者中间件是那种工作的正确选择?
【问题讨论】:
标签: python django django-settings