Skip to content

Асинхронный микросервис для загрузки файлов единым архивом.

Notifications You must be signed in to change notification settings

KhorinVitaly/async-download-service

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Микросервис для скачивания файлов

Микросервис помогает работе основного сайта, сделанного на CMS и обслуживает запросы на скачивание архивов с файлами. Микросервис не умеет ничего, кроме упаковки файлов в архив. Закачиваются файлы на сервер через FTP или админку CMS.

Создание архива происходит на лету по запросу от пользователя. Архив не сохраняется на диске, вместо этого по мере упаковки он сразу отправляется пользователю на скачивание.

От неавторизованного доступа архив защищен хешом в адресе ссылки на скачивание, например: http://host.ru/archive/3bea29ccabbbf64bdebcc055319c5745/. Хеш задается названием каталога с файлами, выглядит структура каталога так:

- photos
    - 3bea29ccabbbf64bdebcc055319c5745
      - 1.jpg
      - 2.jpg
      - 3.jpg
    - af1ad8c76fda2e48ea9aed2937e972ea
      - 1.jpg
      - 2.jpg

Как установить

Для работы микросервиса нужен Python версии не ниже 3.6.

pip install -r requirements.txt

Как запустить

python server.py

Сервер запустится на порту 8080, чтобы проверить его работу перейдите в браузере на страницу http://127.0.0.1:8080/.

Как развернуть на сервере

python server.py

После этого перенаправить на микросервис запросы, начинающиеся с /arhive/. Например:

GET http://host.ru/archive/3bea29ccabbbf64bdebcc055319c5745/
GET http://host.ru/archive/af1ad8c76fda2e48ea9aed2937e972ea/

Запуск с использованием docker-compose

docker-compose up

Сервер также запустится на порту 8080, проверить можно в браузере http://127.0.0.1:8080/.

Параметры и переменные окружения

При запуске вы можете указать следующие параметры: -l включение логирования; -d=0.1 установка задержки ответа в секундах; -p=test_photos путь к директории с фотографиями.

python server.py -l -p=test_photos -d=0.001

При использовании docker-compose отредактируйте файл docker-compose.yml

Альтернативной явдяется установка переменных окружения RESPONSE_DELAY и PHOTO_DIRECTORY_PATH

export RESPONSE_DELAY=0.1 && export PHOTO_DIRECTORY_PATH=test_photos

Директорию с фотографиями необходимо указать в любом случае!

Цели проекта

Код написан в учебных целях — это урок в курсе по Python и веб-разработке на сайте Devman.

About

Асинхронный микросервис для загрузки файлов единым архивом.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 50.5%
  • Python 45.3%
  • Dockerfile 4.2%