Skip to content

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

Notifications You must be signed in to change notification settings

igorzakhar/async-download-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 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.7+.
Также в программе используются следующие сторонние библиотеки:

Рекомендуется устанавливать зависимости в виртуальном окружении, используя virtualenv, virtualenvwrapper или venv.

  1. Скопируйте репозиторий в текущий каталог. Воспользуйтесь командой:
$ git clone https://github.com/igorzakhar/async-download-service.git async_download_service

После этого программа будет скопирована в каталог async_download_service

  1. Создайте и активируйте виртуальное окружение:
$ cd async_download_service # Переходим в каталог с программой
$ python3 -m venv my_virtual_environment # Создаем виртуальное окружение
$ source my_virtual_environment/bin/activate # Активируем виртуальное окружение
  1. Установите сторонние библиотеки из файла зависимостей:
$ pip install -r requirements.txt # В качестве альтернативы используйте pip3

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

Для просмотра справочной информации по использованию программы используйте ключ -h или --help:

$ python3 server.py -h

Аргументы командной строки:

server.py [-h] [-H HOST] [-P PORT] [-D DIR] [-d DELAY] [-v]
  • -h, --help - Вызов справки.
  • -H HOST, --host HOST - IP адрес хоста, на котором работает HTTP сервер (значение по умолчанию 0.0.0.0)
  • -P PORT, --port PORT - TCP порт, на котором сервис будет ожидать входящие запросы (значение по умолчанию 8080).
  • -D DIR, --dir DIR - Директория файлового хранилища (значение по умолчанию test_photos).
  • -d DELAY, --delay DELAY - Задержка между отправкой фрагментов архивного файла в секундах (значение по умолчанию 0).
  • -v, --verbose - Устанавливает уровень логгирования DEBUG (по умолчанию установлен уровень INFO). Также выводится информация об отправке файла.

Пример запуска в Linux(Debian 9.0), Python 3.7.3:

$ python server.py
======== Running on http://0.0.0.0:8080 ========
(Press CTRL+C to quit)

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

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

python server.py

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

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

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages