🐍 Использование файла .env в FastAPI |

🐍 Использование файла .env в FastAPI

Мануал

FastAPI – это современный веб-фреймворк для создания API на Python 3.7+/

Как и во многих других фреймворках, в FastAPI предусмотрена работа с переменными окружения для управления конфигурацией.

Хранение конфигураций в файле .env является общепринятой практикой, которая позволяет отделить конфигурацию от кода приложения, что делает ее более удобной в управлении и безопасной.

В этой статье мы рассмотрим, как интегрировать и использовать .env-файлы в приложении FastAPI.

Зачем нужен файл .env?

  • Разделение: Храните конфигурации отдельно от кода приложения.
  • Безопасность: Избегайте хардкодинга конфиденциальной информации в исходном коде.
  • Переносимость: Легкое переключение между различными конфигурациями в зависимости от среды (разработка, тестирование, продакшен и т.д.).

Начало работы с .env в FastAPI

Как и другие Python-фреймворки, FastAPI также использует пакет python-dotenv для загрузки файлов `.env` в системное окружение.

Затем они используются в приложении.

1. Установите необходимые пакеты:

Для работы с файлами `.env` мы будем использовать библиотеку python-dotenv.

Установите ее с помощью pip:

pip install fastapi[all] python-dotenv uvicorn

2. Создайте файл .env:

Создайте файл `.env` в корне проекта.

Например:

DB_URL=postgresql://username:password@localhost:5432/mydatabase
SECRET_KEY=mysecretkey
DEBUG=True

3. Чтение файла .env в FastAPI:

Вы можете загрузить файл `.env` при запуске приложения.

Ниже приведен Python-скрипт, использующий функцию `load_dotenv` из пакета dotenv для загрузки переменных из файла `.env` в окружение системы.

После загрузки файла .env код извлекает специфические переменные окружения, такие как “DB_URL”, “SECRET_KEY” и “DEBUG”, с помощью функции os.getenv.

from fastapi import FastAPI
import os
from dotenv import load_dotenv

app = FastAPI()

# Load .env file
load_dotenv()

DB_URL = os.getenv("DB_URL")
SECRET_KEY = os.getenv("SECRET_KEY")
DEBUG = os.getenv("DEBUG") == "True"

4. Использование загруженных переменных окружения:

Теперь, когда переменные загружены, вы можете использовать их в своем приложении.

@app.get("/")
def read_root():
    return {"DB_URL": DB_URL, "Debug Mode": DEBUG}

Расширенные возможности использования:

1. Использование окружений с FastAPI Config:

Для дополнительной организации и проверки типов наших конфигураций мы можем использовать пакет типа pydantic:

pip install pydantic

Затем определите модель конфигурации:

from pydantic import BaseSettings

class Settings(BaseSettings):
    DB_URL: str
    SECRET_KEY: str
    DEBUG: bool = False

    class Config:
        env_file = ".env"

Загрузите конфигурации:

settings = Settings()

@app.get("/config/")
def read_config():
    return {"DB_URL": settings.DB_URL, "Debug Mode": settings.DEBUG}

В pydantic переменные окружения автоматически приводятся к правильным типам, что делает работу с конфигурациями более безопасной.

2. Переопределение конфигураций для тестирования:

При написании тестов может потребоваться использование различных конфигураций.

Библиотека python-dotenv позволяет указать путь к файлу .env, поэтому для тестирования можно использовать отдельный файл `.env.test`:

# For testing, load a different .env file
load_dotenv(".env.test")

Заключение

Использование .env-файла в FastAPI-приложениях упрощает управление конфигурациями, повышает безопасность и разделение задач.

С помощью дополнительных инструментов, таких как pydantic, можно обеспечить проверку типов в конфигурациях для раннего выявления потенциальных проблем.

Независимо от того, занимаетесь ли вы локальной разработкой, развертыванием на продакшене или тестированием, использование .env-файлов упрощает управление настройками, специфичными для конкретной среды.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий