Django REST API, который позволяет загружать файлы на сервер, а затем асинхронно обрабатывать их с использованием Celery.
Основные задачи:
- Модель
file - Сериализатор модели
file - Эндпоинт
upload/для загрузки файлов -
Celeryзадача для обработки файла - Эндпоинт
files/для получения данных загруженных файлов
Задачи "CI/CD":
- Тесты
- docker
- Базовый CI/CD - проверка кода линтерами (
flake8) и форматерами (black,isort)
Запуск проекта:
- перед запуском убедитесь, что у вас установлен
redis - Склонируйте репозиторий:
git clone https://github.com/ShadeSWD/file_processor_drf.git
- Установите пакетный менеджер poetry:
pip install poetry
- Создайте базу данных в
PostgreSQLи заполните файл.env, воспользовавшись.env.sample - Перейдите в папку с проектом и настройте виртуальное окружение
poetry install
- Войдите в виртуальное окружение
poetry shell
- Накатите миграции:
manage.py migrate
- Создайте суперпользователя:
manage.py createsuperuser
- Запустите сервер:
manage.py runserver
- В другой консоли необходимо перейти в корень проекта, активировать виртуальную среду и запустить celery:
celery -A config worker --loglevel=info -P eventlet
- Домашняя страница будет доступна по адресу вашего хоста
- Перед первым коммитом необходимо выполнить
для автоматического выполнения проверок перед коммитами
pre-commit install
Эндпоинт upload/, принимает POST-запросы для загрузки файлов. При загрузке файла создаётся объект модели File, и файл сохраняется на сервере. В ответ на успешную загрузку файла вернуть статус 201 и сериализованные данные файла.
После загрузки файла запускается фоновая задача обработки
Пример ответа:
{
"pk": 7,
"upload_at": "2024-02-11T22:51:23.537462Z",
"processed": false,
"processed_at": null
}
Эндпоинт files/, принимает пустой GET-запрос и возвращает список всех файлов с их данными.
После загрузки каждого файла запускается отложенная задача обработки файла. После выполнения задачи поля файла processed меняется на True, а полю procedssed_at присваиваются дата и время окончания обработки.
- Для запуска тестов необходимо находясь в корне проекта активировать виртуальное окружение
poetry shell
- запустите тесты:
manage.py test - для просмотра отчета о покрытии тестами выполните
coverage run --source='.' manage.py test coverage report
Для запуска приложения с помощью docker:
- Склонируйте репозиторий:
git clone https://github.com/ShadeSWD/file_processor_drf.git
- перейдите в корневой каталог
file_processor_drf - Выполните сборку образов
docker-compose build
- Запустите контейнер
docker-compose up
- Приложение будет доступно по адресу
http://localhost:7777/