Как использовать переменные среды в разделе конфигурации Supervisord [supervisord]?
Я использую переменные среды в разделе программы Supervisord, и они работают нормально:
[program:some_prog]
command=%(ENV_env_var_name)s/...
Я не могу понять, как сделать то же самое в секции [supervisord].
Я попытался использовать тот же синтаксис с префиксом ENV_ и без него, но получив следующую ошибку:
Traceback (most recent call last):
File "/usr/local/bin/supervisord", line 9, in <module>
load_entry_point('supervisor==3.0a12', 'console_scripts', 'supervisord')()
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/supervisord.py", line 356, in main
options.realize(args, doc=__doc__)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 419, in realize
Options.realize(self, *arg, **kw)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 284, in realize
self.process_config_file()
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 478, in process_config_file
Options.process_config_file(self, do_usage=do_usage)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 292, in process_config_file
self.read_config(self.configfile)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 527, in read_config
section.directory = existing_directory(directory)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/datatypes.py", line 336, in existing_directory
nv = v % {'here':here}
KeyError: 'var_name'
Есть ли способ достичь этого?
Ответы
Ответ 1
Supervisor поддерживает только расширения с переменными окружения в ограниченном количестве мест, каждый из которых документирован в документации .
К сожалению, параметр [supervisord]
directory
не является одним из них; он поддерживает только переменную %(here)
, ничего больше.
Вы можете запросить этот запрос функции в контролере отслеживания проблем, если это важная проблема для вас.
В моих проектах мы обычно используем zc.buildout, чтобы настроить среду развертывания и разработки, предсказуемую и повторяемую, и сгенерировать конфигурацию супервизора с шаблон. Для облегчения этой задачи существует специализированный рецепт сборки.