Проект представляет собой систему для загрузки и обработки изображений с использованием Django, Celery, Redis, и Postgres. Позволяет пользователям загружать изображения, которые затем асинхронно обрабатываются (преобразование формата, создание миниатюр) и сохраняются в облачное хранилище AWS S3.
- Django
- Docker
- Celery
- Redis
- PostgreSQL
- AWS S3
Для работы проекта необходимо установить Docker и Docker Compose.
Клонируйте репозиторий:
git clone https://github.com/exp-ext/upload.git
Создайте файл .env в корне проекта и заполните его необходимыми переменными окружения:
DEBUG=1
DJANGO_SECRET_KEY='ваш_секретный_ключ'
DJANGO_ALLOWED_HOSTS='localhost'
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD='пароль_redis'
USE_S3=1
AWS_S3_USE_SSL=1
AWS_ACCESS_KEY_ID='ваш_access_key_id'
AWS_SECRET_ACCESS_KEY='ваш_secret_access_key'
AWS_S3_ENDPOINT_URL='url_вашего_S3_хранилища'
AWS_S3_REGION_NAME='регион_S3_хранилища'
docker-compose up --build
После успешного запуска контейнеров, проект будет доступен по адресу http://localhost.
Пользователи могут загружать изображения через предоставленный интерфейс https://you_domen/upload/photo/ Загруженные изображения обрабатываются в фоновом режиме с использованием Celery и сохраняются в AWS S3. Результаты доступны через API проекта.
- Загрузка изображений пользователями.
- Асинхронная обработка изображений (преобразование в форматы webp и crop).
- Сохранение обработанных изображений в AWS S3.
- Просмотр загруженных и обработанных изображений.
- Image - модель для хранения информации об изображениях.
- GetImagesLoadMeta - получение метаданных для загрузки изображений.
- ImageAsUploaded - подтверждение загрузки и запуск обработки изображений.
- Фронтенд реализован с использованием JavaScript и позволяет загружать изображения, а также отображать превью загруженных изображений.
create_full_set_images - обработка изображений и создание полного набора изображений (оригинал, webp, crop).
-
Borokin Andrey
-
GITHUB: exp-ext