Skip to content

MVP: Сервис для асинхронной обработки изображений с FastAPI, RabbitMQ, PostgreSQL и S3.

Notifications You must be signed in to change notification settings

sibeardev/astrid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image Processing Service (MVP)

Сервис для асинхронной обработки изображений с FastAPI, RabbitMQ, PostgreSQL и S3.

⚠️ Это MVP. Основная цель — демонстрация функционала загрузки, асинхронной обработки и хранения результатов.

Технологический стек

  • FastAPI — основной API сервис
  • RabbitMQ — очередь задач
  • PostgreSQL — база данных
  • Docker + Docker Compose — контейнеризация
  • Alembic — миграции базы данных
  • S3 - хранение файлов

Установка

  1. Клонируйте репозиторий:
git clone https://github.com/sibeardev/astrid.git
cd astrid
  1. Создайте файл окружения .env:
    # Database
    DB__USER=user
    DB__PASSWORD=yourpassword
    DB__DB=images_db

    # RabbitMQ
    RABBIT__URL=amqp://guest:guest@rabbit:5672/

    # S3
    S3__BUCKET=images
    S3__REGION=us-east-1
    S3__ACCESS_KEY=minioadmin
    S3__SECRET_KEY=minioadmin
    S3__ENDPOINT=http://minio:9000

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

Собрать образы и запустить сервисы

docker compose up --build

После запуска сервисы доступны по следующим адресам:

Остановить

docker compose down

Работа с миграциями Alembic

Настройка Alembic

В alembic.ini найдите sqlalchemy.url и установите:

sqlalchemy.url = postgresql+asyncpg://user:yourpassword@db:5432/images_db

user, yourpassword и db должны совпадать с настройками Database из .env

Создание новой миграции

Создание миграции:

docker compose run --rm api alembic revision --autogenerate -m "описание миграции"

Применение миграций:

docker compose run --rm api alembic upgrade head

Откат миграции:

docker compose run --rm api alembic downgrade -1

Тестирование

docker compose run --rm api pytest -v src/tests

Пример работы с API

Загрузка изображения:

curl -X POST "http://localhost:8000/images" \
  -F "file=@/path/to/image.jpg"

Возвращает данные по изображению:

curl "http://localhost:8000/images/<image_id>"

About

MVP: Сервис для асинхронной обработки изображений с FastAPI, RabbitMQ, PostgreSQL и S3.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published