Skip to content

FastAPI/SQLAlchemy/Kafka Проект по обработке заявок

Notifications You must be signed in to change notification settings

JackOman69/fastapi_handling_queries

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI Проект для обработки заявок

Надежная система обработки приложений, созданная на основе FastAPI, которая обрабатывает и хранит приложения, а также интегрируется с Kafka для потоковой передачи событий.

Технологии

  • FastAPI
  • SQLAlchemy (Async)
  • Alembic
  • Kafka (aiokafka)
  • PostgreSQL
  • Docker
  • Pytest

Особенности

  • Создание новых заявок
  • Получение заявок списком
  • Фильтрация заявок используя user_name
  • Асинхронная работа с базой данных через SQLAlchemy
  • Потоковая обработка заявок через Kafka
  • Логгирование системы в отдельный лог файл
  • Базовые unit тесты для покрытия основного функционала

API Endpoints

Создание заявки

POST /application

{
    "user_name": "Джон Уик",
    "description": "Заявка на покупку денег"
}
200 OK
{
    "id": 1,
    "user_name": "Джон Уик",
    "description": "Заявка на покупку денег",
    "created_at": "2025-01-15T12:39:20.330961+00:00"
}

Получение заявок

GET /application?user_name=Джон%20Уик&page=1&size=10
200 OK
[
    {
        "id": 1,
        "user_name": "Джон Уик",
        "description": "Заявка на покупку денег",
        "created_at": "2025-01-15T12:39:20.330961+00:00"
    }
]

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

Клонируйте репозиторий:

git clone https://github.com/JackOman69/fastapi_handling_queries.git

Установка .env:

  • Создайте файл .env в корневой директории и вложите туда переменные (приведен пример):
PG_HOST=localhost
PG_PORT=5432
PG_USER=postgres
PG_PASSWORD=postgres
PG_DB=applications_db
KAFKA_BOOTSTRAP_SERVERS = "kafka:9092"
KAFKA_TOPIC = "applications"

Запуск через Docker:

  • Запускать проект нужно с помощью следующих команд:
docker-compose up -d

Инициализация топика Kafka:

  • Для создания топика Kafka выполните следующую команду:
 docker exec -it fastapi_handling_queries-kafka-1 echo "/usr/bin/kafka-topics --create --partitions 1 --replication-factor 1 --topic applications --bootstrap-server localhost:9092"
  • С помощью данной команды выполнится создание топика Kafka с именем "applications" внутри докер контейнера.

Запуск тестов:

  • Для запуска тестов нужно зайти внутрь контейнера fastapi_backend-1 и выполнить команду:
pytest src/unit_tests/crud_operations_tests.py -v

Проверка данных внутри топика Kafka:

  • Для проверки данных внутри топика Kafka можно использовать следующую команду:
 /usr/bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic applications --from-beginning

About

FastAPI/SQLAlchemy/Kafka Проект по обработке заявок

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published