Обычно не рекомендуется передавать параметры конфигурации в систему управления версиями, особенно если эти параметры включают пароли или другие секреты. Я предпочитаю использовать переменные среды для передачи этих значений в программу. Самый гибкий способ, который я нашел, - это использовать модуль argparse
и использовать переменные среды в качестве значений по умолчанию. Таким образом, вы можете переопределить переменные среды в командной строке. Однако будьте осторожны с вводом паролей в командную строку, потому что другие пользователи, вероятно, увидят ваши аргументы командной строки в списке процессов.
Вот пример, в котором используются argparse
и среда переменные:
def parse_args(argv=None):
parser = ArgumentParser(description='Watch the raw data folder for new runs.',
formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument(
'--kive_server',
default=os.environ.get('MICALL_KIVE_SERVER', 'http://localhost:8000'),
help='server to send runs to')
parser.add_argument(
'--kive_user',
default=os.environ.get('MICALL_KIVE_USER', 'kive'),
help='user name for Kive server')
parser.add_argument(
'--kive_password',
default=SUPPRESS,
help='password for Kive server (default not shown)')
args = parser.parse_args(argv)
if not hasattr(args, 'kive_password'):
args.kive_password = os.environ.get('MICALL_KIVE_PASSWORD', 'kive')
return args
Установка этих переменных среды может быть немного запутанной, особенно для системных служб. Если вы используете systemd, загляните в службу. , и будьте осторожны, чтобы использовать EnvironmentFile
вместо Environment
для любых секретов. Environment
значений может просматривать любой пользователь с systemctl show
.
Обычно я делаю значения по умолчанию полезными для разработчика, работающего на своей рабочей станции, чтобы он мог начать разработку без изменения какой-либо конфигурации.
Другой вариант — поместить параметры конфигурации в файл settings.py
и просто быть осторожным, чтобы не зафиксировать этот файл в системе управления версиями. Я часто коммитил файл settings_template.py
, который пользователи могут копировать.
person
Don Kirkby
schedule
13.06.2018