This project demonstrates how to manage dynamic feature flags using NATS JetStream KeyValue store and FastAPI. Feature flags are managed through a REST API, enabling real-time control over application features.
Этот пример демонстрирует, как управлять флагами функций (feature flags) с использованием хранилища NATS JetStream KeyValue и FastAPI. Конфигурации и флаги управляются динамически, предоставляя возможность изменения их состояния через API.
- NATS JetStream: Используется для хранения и управления конфигурациями.
- FastAPI: Фреймворк для построения быстрых и асинхронных веб-приложений на Python.
- Pydantic: Валидация данных и управление моделями конфигураций.
- Python 3.12+
- NATS JetStream
- FastAPI
git clone https://github.com/deus-developer/dynconf-nats.git
cd dynconf-nats
Настройки приложения, такие как URL сервера NATS, задаются через переменные окружения или конфигурационный файл.
Пример файла .env
:
NATS_SERVERS=nats://localhost:4222
Добавляет или устанавливает новый флаг функции.
Параметры запроса:
feature
(str
): Название флага.
Пример тела запроса:
{
"criteria": null,
"value": true
}
Обновляет существующий флаг функции, проверяя ревизию данных.
Параметры запроса:
feature
(str
): Название флага.
Пример тела запроса:
{
"criteria": {
"region": "US",
"user_tier": "premium"
},
"value": false
}
Возвращает текущее значение флага функции. Опционально можно принудительно обновить данные из хранилища.
Параметры запроса:
feature
(str
): Название флага.force
(bool
, по умолчаниюFalse
): Если установлено вtrue
, данные будут получены напрямую из NATS JetStream, обходя кэш.
Пример ответа:
{
"criteria": null,
"value": true
}
Для упрощения запуска приложения вы можете использовать Docker Compose, который автоматически создаст и запустит необходимые контейнеры для вашего FastAPI-приложения и сервера NATS JetStream.
-
Убедитесь, что у вас установлен Docker и Docker Compose.
-
Запустите Docker Compose:
docker-compose up --build -d
Эта команда создаст и запустит контейнеры для FastAPI и NATS JetStream. Опция
--build
гарантирует, что Docker пересоберет образы, если были внесены изменения вDockerfile
или файлы проекта. -
После запуска, ваше приложение будет доступно по адресу
http://127.0.0.1:8080
. Вы можете использовать его API, как указано в разделе API Эндпоинты.
Чтобы остановить и удалить контейнеры, запущенные Docker Compose, выполните команду:
docker-compose down
Это удалит все созданные контейнеры и сети, оставив только образы.
Это удалит все созданные контейнеры и сети, оставив только образы.
Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE
.