Надежная система обработки приложений, созданная на основе FastAPI
, которая обрабатывает и хранит приложения, а также интегрируется с Kafka
для потоковой передачи событий.
FastAPI
SQLAlchemy (Async)
Alembic
Kafka (aiokafka)
PostgreSQL
Docker
Pytest
- Создание новых заявок
- Получение заявок списком
- Фильтрация заявок используя user_name
- Асинхронная работа с базой данных через SQLAlchemy
- Потоковая обработка заявок через Kafka
- Логгирование системы в отдельный лог файл
- Базовые unit тесты для покрытия основного функционала
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
в корневой директории и вложите туда переменные (приведен пример):
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-compose up -d
- Для создания топика 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 можно использовать следующую команду:
/usr/bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic applications --from-beginning