Замена заполнителя в иерархическом файле config.yaml значением из файла .env.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Замена заполнителя в иерархическом файле config.yaml значением из файла .env.

Сообщение Anonymous »

Сейчас у меня есть вот такой config.yaml

Код: Выделить всё

kafka:
bootstrap_servers: "${BOOTSTRAP_SERVERS}"
group: "${GROUP_NAME_1}"
topics:
- name: "${TOPIC_1}"
consumers: "${CONSUMER_NUMBER_FOR_TOPIC_1}"
И у меня Dynaconf работает, как показано ниже:

Код: Выделить всё

from dynaconf import Dynaconf
from dynaconf.validator import Validator

settings = Dynaconf(
envvar_prefix="service-a",
settings_files=['config.yaml'],
load_dotenv=True,
dotenv_path='.env',
validators=[
Validator(
"server.port", must_exist=True
)
]
)
Тогда настройки будут использоваться так:

Код: Выделить всё

def start_kafka_consumers():
topics = settings.kafka.topics
threads = []
for topic in topics:
topic_name = topic['name']
consumer_count = topic['consumers']
logger.info(f"{consumer_count} consumers will be started for topic {topic_name}")

for _ in range(consumer_count):
thread = threading.Thread(target=start_consumer_for_topic, args=(topic_name,))
thread.start()
threads.append(thread)
Прелесть использования файла config.yaml в том, что я могу группировать некоторые свойства с помощью иерархии. Например, у меня может быть тема «abc» с 1 потребителем, сгруппированным по темам. А позже я могу просто добавить тему «def» с двумя потребителями. И код будет динамически загружать и использовать их.
Причина, по которой я хочу использовать заполнитель и файл .env для определения фактического значения, заключается в том, что я хочу запустить его на своем local с соответствующим значением. Затем, позже, когда оно будет загружено в облако GCP, я могу использовать переменные среды (например, секретный менеджер), чтобы перезаписать значение.
Однако заполнитель ${} не работает. как и ожидалось. Dynaconf не использует значение файла .env для замены текста-заполнителя. Есть предложения? Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... value-in-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»