Микросервис помогает работе основного сайта, сделанного на CMS и обслуживает запросы на скачивание архивов с файлами. Микросервис не умеет ничего, кроме упаковки файлов в архив. Закачиваются файлы на сервер через FTP или админку CMS.
Создание архива происходит на лету по запросу от пользователя. Архив не сохраняется на диске, вместо этого по мере упаковки он сразу отправляется пользователю на скачивание.
От неавторизованного доступа архив защищен хешом в адресе ссылки на скачивание, например: http://host.ru/archive/3bea29ccabbbf64bdebcc055319c5745/
. Хеш задается названием каталога с файлами, выглядит структура каталога так:
- photos
- 3bea29ccabbbf64bdebcc055319c5745
- 1.jpg
- 2.jpg
- 3.jpg
- af1ad8c76fda2e48ea9aed2937e972ea
- 1.jpg
- 2.jpg
Для работы микросервиса нужен Python версии не ниже 3.7.
pip install -r requirements.txt
Параметр | Переменная окружения | Описание | Значение по умолчанию |
---|---|---|---|
--debug |
ADS_DEBUG |
Будут выводиться отладочные сообщения. Скрипт запустится с logging.DEBUG |
False |
--delay |
ADS_DELAY |
Задать задержку между отправками порций архива в секундах. |
0 |
--photo_path |
ADS_PHOTO_PATH |
Абсолютный путь в котором содержатся папки с фотографиями |
/app/test_photos |
Параметры передаваемые в скрипт имеют приемущество перед переменными окружения
python server.py
или
python server.py --debug --delay 1 --photo_path /new/path/to/photos
Сервер запустится на порту 8080, чтобы проверить его работу перейдите в браузере на страницу http://127.0.0.1:8080/.
python server.py
После этого перенаправить на микросервис запросы, начинающиеся с /archive/
. Например:
GET http://host.ru/archive/3bea29ccabbbf64bdebcc055319c5745/
GET http://host.ru/archive/af1ad8c76fda2e48ea9aed2937e972ea/
- Убедитесь, что у вас установлен Docker
Соберите образ
docker-compose build
И запустите сервис
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
Если нужно изменить настройки, то самый простой/удобный способ - передать переменные окружения через файл
создадим файл с настройками в корневой папке проекта
echo -e "ADS_DEBUG=true\nADS_PHOTO_PATH=/app/test_photos" > .env_ads
добавим ссылку на файл .env_ads
в docker-compose.dev.yml
version: '2'
services:
web:
volumes:
- .:/app
env_file:
- .env_ads
Код написан в учебных целях — это урок в курсе по Python и веб-разработке на сайте Devman.