Skip to content

Serhioth/tenderplane_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tenderplane_test

Тестовое задание для вакансии от Tenderplane

Приложение для парсинга страниц поиска тендеров сайта государственных закупок (ЕИС)

Стек технологий

  • Язык: Python 3.10+
  • Асинхронные запросы: httpx, asyncio
  • Парсинг данных: lxml + XPath
  • Очередь задач: Celery + Redis
  • Контейнеризация: Docker, Docker Compose
  • Тестирование: Pytest

Возможности

  • Возможность скачивать указанное количество страниц (настраивается через переменные окружения)
  • Полностью асинхронная обработка всех веб-запросов
  • Параллельное выполнение парсинга результатов через Celery

Архитектура приложения

В приложении реализована микросервисная архитектура, с помощью Docker и Docker-compose. Приложение содержит следующие микросервисы:

  • parser — сервис, отвечающий за парсинг страниц и передачу данных в очередь Celery
  • redis — брокер сообщений для взаимодействия между сервисами
  • worker — сервис обработки данных, полученных из очереди

Покрытие тестами

Основная логика всех микросервисов покрыта юнит и интеграционными тестами:

  • parser - основная логика (утилиты для реализации парсинга и отправки данных в очередь) покрыта тестами на 90%
  • worker - основная логика (утилиты и таски для Celery) покрыта тестами на 100%

Установка и настройка

Внутри директории с каждым микросервисом (parser, worker) Вы найдёте пример файлов конфигурации переменных окружения (.env.example). Перед запуском необходимо будет указать некоторые обязательные параметры для запуска приложения.

Запуск приложения

Запуск приложения возможен только если на Вашем компьютере установлены Docker и Docker-compose.

  • Для запуска приложения в рабочем режиме:
docker-compose -f docker-compose.prod.yml up

Приложение создаст контейнеры, установит зависимости, после чего спарсит указанное количество страниц и выдаст результат в консоль.

  • Для запуска автоматических тестов:
docker-compose -f docker-compose.test.yml up

Приложение создаст контейнеры, установит зависимости, после чего запустит автоматические тесты, результат которых выведет в консоль. Тесты запускаются последовательно, для каждого микросервиса, поэтому, пожалуйста, дождитесь вывода результатов для каждого микросервиса.

Контакты

Если у Вас есть вопросы по заданию, напишите: 📧 filatov.s.a.work@gmail.com

About

Тестовое задание для вакансии от Tenderplane

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors