Skip to content

🏠 На главную | 🧭 Руководство (RU) | ⚙️ API Reference

⚙️ Settings: Архитектура настроек

Этот раздел описывает базовые паттерны конфигурации, используемые для управления настройками приложений в экосистеме codex-core.

Цель домена

Домен settings предоставляет надежную и стандартизированную базу для загрузки конфигурации из переменных окружения и файлов .env, специально разработанную для работы с общей инфраструктурой, такой как Redis.

1. BaseCommonSettings

BaseCommonSettings — это неизменяемая модель настроек Pydantic, которая служит фундаментом для конфигураций конкретных проектов.

Ключевые особенности:

  • Подключение к Redis: Автоматически создает свойство redis_url на основе хоста, порта и пароля.
  • Безопасные пароли: Использует quote_plus для обеспечения того, чтобы специальные символы в паролях не разрывали строку подключения.
  • Осведомленность о среде: Предоставляет флаги is_production и is_development на основе настройки debug.

2. Реализация в проекте

Проекты должны наследоваться от BaseCommonSettings и определять свой собственный model_config, чтобы указать местоположение файла .env.

from codex_core.settings import BaseCommonSettings
from pydantic_settings import SettingsConfigDict
from pathlib import Path

class ProjectSettings(BaseCommonSettings):
    # Настройки конкретного проекта
    my_api_token: str = "secret"

    # Обязательно: укажите, где искать .env
    model_config = SettingsConfigDict(
        env_file=Path(__file__).parent / ".env",
        env_file_encoding="utf-8",
        extra="ignore",
    )

Рекомендации

  • Никогда не фиксируйте .env: Убедитесь, что файлы .env находятся в .gitignore.
  • Используйте понятные имена: Предпочитайте описательные имена переменных окружения, такие как REDIS_PASSWORD, а не общие.
  • Явные значения по умолчанию: Определяйте разумные значения по умолчанию в вашем классе настроек для локальной разработки.