Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从settings.py更改设置变量_Python_Django_Django Settings - Fatal编程技术网

Python 从settings.py更改设置变量

Python 从settings.py更改设置变量,python,django,django-settings,Python,Django,Django Settings,我将Django 1.3与mod_wsgi一起使用 在mysettings.py中 DISABLE_SYSTEM = False DISABLE_USER_INTERFACE = False MIDDLEWARE_CLASSES = [ 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware

我将Django 1.3与mod_wsgi一起使用

在my
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\u SYSTEM
设置为
True
时,
SomeMiddleware
process\u request
函数返回一条带有
HttpResponse
的警告消息,并且下面的中间软件根本不运行。这给了我一种为了维护而关闭系统的感觉

禁用用户界面
过滤
请求
并阻止用户调用的任何查看功能,而
管理
URL和管理功能正常运行

到目前为止,我使用它进行不同类型的维护,我只需从文件中更改它,然后触摸wsgi以重新加载python模块。但是现在,我需要使用一种定时例程来停止基于用户的请求,并在后台和管理员处进行一些维护

此时,i系统(而非用户)需要从
settings.py
禁用用户界面设置为
True
,并开始维护。但是我找不到更好的方法来处理这个问题,不是从
settings.py
而是从其他地方

settings py
中的行比changes
DISABLE\u USER\u INTERFACE
中的行要多,这是因为我每天需要使用一次此功能,并且对每个请求使用这两个中间件似乎不合逻辑。因此,在我当前的模型中,它们只在需要运行时运行

如有任何建议,将不胜感激

更新:我想做的是在每天19:00-19:30禁用用户界面。我不确定是否要进行中间件级别的检查,如:

if 19:00<now()<19:30:
    stop system

如果19:00当您计划更改设置时,您可能需要重新考虑您正在做的事情

您的中间件可以变得越来越智能。这使得你的设置变得越来越愚蠢

我强烈建议您有一个
SomeMiddleware
类,它总是安装在

然后,
SomeMiddleware
类可以检查
设置,并决定应该执行哪些行为

还有更好的方法可以做到这一点

您不必修改计划维护的设置。在运行的Django应用程序中,您有很多种与中间件通信的方式。最快的方法之一是通过数据库

您可以有一个“操作模式”类定义,其中包含一个(或几个)属性,这些属性只是由中间件获取以查看发生了什么。您可以编写管理应用程序,在此表上执行简单更新以更改模式


您可以有一个“操作模式”文件名(如果存在)来更改中间件的行为。您只需执行
os.path.exists()
kind函数即可(快速)检查要执行的操作。

当您计划更改设置时,您可能需要重新考虑正在执行的操作

您的中间件可以变得越来越智能。这使得你的设置变得越来越愚蠢

我强烈建议您有一个
SomeMiddleware
类,它总是安装在

然后,
SomeMiddleware
类可以检查
设置,并决定应该执行哪些行为

还有更好的方法可以做到这一点

您不必修改计划维护的设置。在运行的Django应用程序中,您有很多种与中间件通信的方式。最快的方法之一是通过数据库

您可以有一个“操作模式”类定义,其中包含一个(或几个)属性,这些属性只是由中间件获取以查看发生了什么。您可以编写管理应用程序,在此表上执行简单更新以更改模式


您可以有一个“操作模式”文件名(如果存在)来更改中间件的行为。您只需执行
os.path.exists()
kind函数即可(快速)检查要执行的操作。

我想要的是在19.00到19.30之间关闭系统,我考虑编写一个中间件,检查每个请求的时间,如果是维护时间,则阻止它们,但如果是19.00,则运行
“但是运行if 19.00谢谢,因为我使用的是
memcached
模块,所以我设置了一个cron来创建一个缓存密钥,我的中间件检查该密钥是否存在。由于
memcache
支持每个
memcache
对象的
生存期
,因此不需要第二个cron来删除相关的缓存键。“我的中间件检查该键的存在性。”检查时间可能要便宜得多。不过,既然你对此很满意,干杯。谢谢,我将做一些压力测试来检查两者之间的差异(:我想要的是在19.00到19.30之间关闭系统,我考虑编写一个中间件来检查每个请求的时间,如果是维护时间,则阻止它们,如果是19.00,则运行
)“但是运行if 19.00谢谢,因为我正在使用
memcached
模块,我设置了一个cron来创建一个缓存密钥,我的中间件会检查该密钥是否存在。因为
memcache
支持每个
memcache
对象的
生存期
,所以不需要第二个cron来删除相关的缓存密钥。“我的中间件检查该密钥是否存在。”检查时间可能要便宜得多。但是,既然您对此感到满意,干杯。谢谢,我将进行一些压力测试以检查两者之间的差异(: