Многие начинают с Option 1, потому что это быстро. Но по мере роста проекта поиск того, «откуда взялся этот API_KEY», превращается в детектив.
Почему Option 2 (Централизация) — это стандарт
Fail-Fast: Ваше приложение упадет при запуске, если забыт важный токен, а не через два часа работы, когда дело дойдет до вызова глубоко запрятанной функции.
Типизация: os.environ всегда возвращает строки. Если вам нужен RETRY_COUNT как int или DEBUG как bool, централизованный конфиг сделает приведение типов за вас.
Единый источник истины: Все настройки проекта видны в одном файле.
В 2026 году лучшим способом реализации Option 2 является библиотека pydantic-settings.
Она делает валидацию конфигурации автоматической:
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
db_url: str
api_key: str
debug: bool = False # Значение по умолчанию
# Автоматически читает из .env файла
model_config = SettingsConfigDict(env_file=".env")
settings = Settings()
🏁 Итог
Переход на централизованный конфиг — это тот самый «низко висящий фрукт», который моментально повышает надежность системы.
А какой подход используете вы?
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
