Установка и получение переменных среды в колбах - PullRequest
1 голос
/ 10 июня 2019

Я хочу создать очень простой REST API, используя python3 / flask.

Скажем, например, я хочу установить SECRET_KEY, требуемый flask, как env var.

Чтоэто рекомендуемый способ?

Мне известен пакет python-dotenv, который позволяет (или я должен сказать требует ?) файл .flaskenv с ключами env, установленными в качестве ключапары-значения в виде

SECRET_KEY="my_secret_key"
DB_NAME="mydatabase"

и т. д.

Затем (я предполагаю) я могу создать файл settings.py, например

import os
SECRET_KEY = os.getenv('SECRET_KEY`)

, а затемвыполните import settings для моих файлов фляги и т. д.

Мой главный вопрос: как это можно адаптировать в контейнере, где не будет такого файла .flaskenv, но будут доступны соответствующие переменныекак env vars времени выполнения в самом контейнере (скажем, через его оркестратор)

Сможет ли указанная выше форма settings.py быть в состоянии получить env vars в отсутствие .flaskenv?

Ответы [ 2 ]

3 голосов
/ 10 июня 2019

python-dotenv на самом деле не имеет ничего общего с Flask.Ваш .env файл должен быть переведен в фактические переменные env.Так что, если у вас не будет фактических переменных env, ваш os.getenv все равно должен работать.

Sidenote: Вы также можете использовать os.environ:

os.environ.get("SECRET")
0 голосов
/ 11 июня 2019

Установите переменную окружения в интерпретаторе:

export SECRET_KEY=123

Вызовите переменную с помощью environ.get():

from os import environ
from flask import Flask

app = Flask(__name__)

app.config['SECRET_KEY'] = environ.get('SECRET_KEY')

Проверка:

@app.route('/verify')
def verify():
    return '<p>' + app.config['SECRET_KEY'] + '</p>'
...