Микросервис помогает работе основного сайта, сделанного на 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 --log_off
- с помощью переменных окружения
LOG_OFF = True
- с помощью аргумента запуска
- Задать каталог с архивами фотографий (по умолчанию
test_photos
):- с помощью аргумента запуска
python server.py --photo_dir my_dir
- с помощью переменных окружения
PHOTO_DIR = 'my_dir'
- с помощью аргумента запуска
- Задать имя файла логов (по умолчанию
server.log
):- с помощью аргумента запуска
python server.py --log_filename logfile.log
- с помощью переменных окружения
LOG_FILENAME = 'logfile.log'
- с помощью аргумента запуска
- Задать адрес хоста и порт (по умолчанию
127.0.0.1:8080
):- с помощью переменных окружения
HOST = 0.0.0.0
иPORT = 12345
- с помощью переменных окружения
python server.py
После этого перенаправить на микросервис запросы, начинающиеся с /archive/
. Например:
GET http://host.ru/archive/3bea29ccabbbf64bdebcc055319c5745/
GET http://host.ru/archive/af1ad8c76fda2e48ea9aed2937e972ea/
Код написан в учебных целях — это урок в курсе по Python и веб-разработке на сайте Devman.