Сервис на Flask + Celery + Redis, который принимает изображение, обрабатывает его нейросетью EDSR и отдаёт увеличенный в 2 раза результат без сохранения на диск.
- Асинхронный апскейлинг: загрузил картинку → получил
task_id→ скачал результат. - Нейросеть EDSR (2x) загружается один раз и не перечитывается с диска.
- Файлы не сохраняются на диск – всё через Redis (TTL 1 час).
- Три эндпоинта:
POST /upscale,GET /tasks/<id>,GET /processed/<id>. - Докеризовано (Flask, Celery, Redis в одном
docker-compose.yml). - Покрыто тестами.
- Убедись, что Docker установлен.
- Клонируй репозиторий:
Модель
git clone https://github.com/bsekinaev/upscale-service.git cd upscale-serviceEDSR_x2.pbуже лежит в корне. - Запусти:
docker-compose up --build -d
- Сервис готов к работе на
http://localhost:5000.
# Загрузка изображения
curl -X POST -F "file=@input.jpg" http://localhost:5000/upscale
# → {"task_id":"..."}
# Проверка статуса
curl http://localhost:5000/tasks/<task_id>
# → {"status":"SUCCESS","download_url":"/processed/..."}
# Скачать результат
curl http://localhost:5000/processed/<task_id> -o upscaled.png| Метод | Путь | Описание | Ответ |
|---|---|---|---|
| POST | /upscale |
Загрузить файл (multipart/form-data, поле file) |
{"task_id":"uuid"} (202) |
| GET | /tasks/<task_id> |
Проверить статус задачи | {"status":"PENDING"} или {"status":"SUCCESS", "download_url":"..."} |
| GET | /processed/<task_id> |
Скачать обработанный PNG | Файл task_id.png |
Поддерживаются форматы: PNG, JPEG, BMP, TIFF.
docker-compose exec flask pytest tests/Тесты проверяют:
- Отказ при отсутствии файла.
- Полный цикл: загрузка → обработка → получение статуса
SUCCESSи файла.
Celery в тестах работает синхронно (task_always_eager, task_store_eager_result).