2013-11-28 4 views
0

У меня есть глобальный флаг в одном из своих модулей, config/top.py:Переключения между производством и развитием

RUNNING_MODE = "production" # could also be "development", set manually 

В зависимости от этого флага, я хотел бы включить некоторые параметры производства/развития. Например, в production.py я хочу иметь:

LOG_LEVEL = "WARNING" 

И в development.py:

LOG_LEVEL = "INFO" 

(есть гораздо больше настроек, которые будут установлены)

Цель состоит в том, чтобы иметь возможность использовать эти настройки прозрачно в любом из моих модулей, скажем, test.py:

from config.settings import LOG_LEVEL 

Это будет использовать правильную установку, либо от production.py, либо от development.py, в зависимости от RUNNING_MODE.

Есть ли приемлемый подход для обработки такого рода настроек? Как бы я структурировал каталоги/модули так, чтобы, просто изменив RUNNING_MODE в config/top.py, вся конфигурация происходит прозрачно?

Примечание: Я предпочитаю, чтобы это не было в процессе сборки, но чтобы оно было встроено в структуру модуля. То есть, я не хочу, чтобы процесс сборки менял любой из моих модулей.

ответ

2

Вы можете легко достичь этого.

Ниже приводится структура папок:

> config/ 
    settings.py 
    production.py 
    development.py 

Сейчас в settings.py:

RUNNING_MODE = "production" # could also be "development", set manually 

if ENVIRONMENT == "production": 
    from production import * 
elif ENVIRONMENT == "development": 
    from development import * 

Держите зависимые все настройки вашей среды в отдельных файлах.

И затем, в views.py или любом другом файле в проекте.

from config.settings import LOG_LEVEL 
Смежные вопросы