分布式django配置的flasky方法
django-kungfu的Python项目详细描述
姜戈功夫
django-kungfu提供设置django配置的能力 机制,因此很容易集成与开发或部署相关的 设置覆盖。
这个想法是在我使用了一段时间漂亮的配置系统之后产生的。 在Flask中实现。事实上,大部分代码都是受启发的 由位于here的烧瓶实现。
示例用法
与django项目的集成相当简单,取决于 偏好。一个可能的设置可能如下:
# At the bottom of your/settings.py file just add the following lines from django_kungfu import Configurator config = Configurator(locals()) config.from_pyfile(os.path.join(os.path.dirname(__file__), 'dev_settings.py')) config.from_envvar('DJANGO_SETTINGS_OVERRIDE')
简而言之,当加载django设置文件时会发生以下情况: #如果dev_settings.py文件与设置文件位于同一目录中, 所有的上例常量都被加载到本地上下文中。 一个 #如果Django_settings_override环境变量已设置并指向 一个有效的配置文件,该配置文件以相同的方式加载
默认情况下,如果未找到指定的文件或环境变量,或 无效,配置程序将自动失败。例如,这很有用 使用生产系统中不可用的开发设置时 我们希望保留一个设置文件作为配置入口点。
如果要强制特定配置文件的存在,或者 环境变量可以将silent=False与 方法。
使用此配置,您可以轻松地设置生产环境 通过在生产wsgi文件中设置适当的环境变量:
# prod.wsgi import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") os.environ.setdefault("DJANGO_SETTINGS_OVERRIDE", os.path.expanduser("~/etc/myproject/prod_settings.py")) from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
为什么是功夫?
之所以选择这个名字,是因为功夫用我的母语发音(一个地区 罗马尼亚方言)听起来类似于config(confu)。当然还有我对军事的同情 艺术,尤其是功夫,带来了几点。