Skip to content

depocoder/async-zipper

Repository files navigation

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

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

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

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

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

Как установить (Linux)

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

pip install -r requirements.txt
apt-get update && apt-get install -y zip

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

python server.py

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

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

Создайте файл .env

В файл .env укажите при необходимости переменные окружения DEBUG - Режим отладки MEDIA_DIR - Путь до папки с хэшами INTERVAL_SECS - Сколько секунд ожидать между отправкой чанками

Пример .env файла

DEBUG=True
MEDIA_DIR=my_dir
INTERVAL_SECS=10

Запустите контейнеры

Build контейнеров будет автоматически

docker-compose up -d

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

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

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published