Skip to content

deus-developer/dynconf-nats

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dynamic Configuration Management with NATS JetStream and FastAPI

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

API Эндпоинты

PUT /feature

Добавляет или устанавливает новый флаг функции.

Параметры запроса:

  • feature (str): Название флага.

Пример тела запроса:

{
    "criteria": null,
    "value": true
}

POST /feature

Обновляет существующий флаг функции, проверяя ревизию данных.

Параметры запроса:

  • feature (str): Название флага.

Пример тела запроса:

{
    "criteria": {
        "region": "US",
        "user_tier": "premium"
    },
    "value": false
}

GET /feature

Возвращает текущее значение флага функции. Опционально можно принудительно обновить данные из хранилища.

Параметры запроса:

  • feature (str): Название флага.
  • force (bool, по умолчанию False): Если установлено в true, данные будут получены напрямую из NATS JetStream, обходя кэш.

Пример ответа:

{
    "criteria": null,
    "value": true
}

Запуск приложения

Для упрощения запуска приложения вы можете использовать Docker Compose, который автоматически создаст и запустит необходимые контейнеры для вашего FastAPI-приложения и сервера NATS JetStream.

  1. Убедитесь, что у вас установлен Docker и Docker Compose.

  2. Запустите Docker Compose:

    docker-compose up --build -d

    Эта команда создаст и запустит контейнеры для FastAPI и NATS JetStream. Опция --build гарантирует, что Docker пересоберет образы, если были внесены изменения в Dockerfile или файлы проекта.

  3. После запуска, ваше приложение будет доступно по адресу http://127.0.0.1:8080. Вы можете использовать его API, как указано в разделе API Эндпоинты.

Завершение работы

Чтобы остановить и удалить контейнеры, запущенные Docker Compose, выполните команду:

docker-compose down

Это удалит все созданные контейнеры и сети, оставив только образы.


Лицензия

Это удалит все созданные контейнеры и сети, оставив только образы.

Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.


About

A simple dynconf impl over NATS KeyValue

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published