Управление настройками приложения¶
Модуль settings реализует паттерн "Конфигурация как код" с использованием Pydantic, предоставляя типобезопасный доступ к настройкам приложения.
Особенности¶
- Строгая типизация всех настроек
- Автоматическая загрузка из переменных окружения
- Валидация данных на этапе инициализации
- Вычисляемые свойства для часто используемых значений
- Поддержка расширяемой конфигурации
Документация API¶
Класс Settings¶
Основной класс для работы с настройками приложения. Наследуется от pydantic.BaseSettings.
Bases: BaseSettings
Pydantic-модель конфигурации приложения.
Source code in src/config/settings.py
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Примеры использования¶
Базовое использование¶
from src.config.settings import Settings
# Инициализация настроек
settings = Settings()
# Доступ к настройкам
db_uri = settings.postgres_uri
secret_key = settings.FASTAPI_SECRET
Настройка окружения¶
- Создайте файл
.envв корне проекта с необходимыми переменными - Или установите переменные окружения напрямую в системе
Пример минимального .env файла:
FASTAPI_SECRET=your-secret-key
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_DB=dbname
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
Рекомендации¶
- Безопасность
- Никогда не коммитьте файлы с реальными секретами в репозиторий
- Используйте разные настройки для разных окружений (dev/stage/prod)
-
Храните чувствительные данные в защищенном хранилище (например, Vault)
-
Разработка
- Для локальной разработки создайте файл
.env.local(добавьте его в .gitignore) -
Используйте значения по умолчанию для некритичных настроек
-
Тестирование
- Переопределяйте настройки в фикстурах тестов
- Используйте моки для изоляции тестов от реальных настроек
Интеграция¶
Модуль settings интегрируется с:
- Pydantic для валидации и парсинга
- FastAPI (через переменные окружения)
- SQLAlchemy (через строку подключения)
- Любыми другими библиотеками, поддерживающими загрузку из
os.environ
Ограничения¶
- Все значения загружаются при старте приложения
- Изменения в
.envфайле требуют перезапуска приложения - Строгая типизация может потребовать дополнительной настройки для нестандартных типов данных