Skip to content

savilard/download-photos

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.11.

git clone https://github.com/savilard/download-photos.git
  • перейдите в папку с проектом:
cd download-photos
  • установите зависимости с помощью Poetry:
poetry install

Если запускаете с помощью Docker, настройте переменные окружения:

`LOGGING` - включать логирование или нет (по-умолчанию "False")
`DELAY` - задержка ответа в секундах (по-умолчанию 0)
`PHOTOS_DIR_PATH` - путь к каталогу с файлами (по-умолчанию "test_photos")

Для запуска с помощью Poetry можно использовать аргументы командной строки:

--logging - включать логирование или нет (по-умолчанию "True");
--delay - задержка ответа в секундах (по-умолчанию 0)
--path - путь к каталогу с файлами (по-умолчанию "test_photos")

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

  • с помощью Poetry
cd app && poetry run python server.py [OPTIONS]
  • с помощью Docker
docker compose up --build

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

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

  • с помощью Poetry
cd app && poetry run python server.py
  • с помощью Docker
docker compose up --build

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

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

Цели проекта

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published