- Python 3.7
- FastAPI
- Selenium для парсинга.
- SQLite для хранения данных сервиса
- Docker
- Pydantic для создания моделей
-
/add
- Метод регистрирует пару. Принимает два значения: phrase (string) и region (string), возвращает id добавленной пары. Если пара была в системе ранее то вернется существующее ранее id, если она новая, то значения будут добавлены в базу данных и вернется id новой пары. После добавления дла пары каждый час будут считаться топ 5 объявлений и число объявлений. -
/stat
- Метод возвращает пары (временная_метка: счетчик_числа_объявлений). Число объявлений вычисляется каждый час и добавляется в базу данных в таблицу TimeStamps. На вход методу подается id (string) пары, зарегистрированной в системе -
/get_top
- Метод возвращает список ссылок на топ-5 объявлений. Принимает id (string) пары, которая зарегистрированна в системе
- При вызове
/add("Диван", "Москва")
вернется результат:
{
"id": "1"
}
- При вызове
/stat("1")
вернется результат:
{
"result": {
"1607427986.62899": "44187"
}
}
- При вызове
/get_top("1")
вернется результат:
{
"result": [
"https://www.avito.ru/moskva/mebel_i_interer/divan_1661672386",
"https://www.avito.ru/moskva/mebel_i_interer/divan_1807130361",
"https://www.avito.ru/moskva/mebel_i_interer/divan_chesterfild_uglovoy_raskladnoy_akvamarin_1597487357",
"https://www.avito.ru/moskva/mebel_i_interer/uglovoy_divan_2057617591",
"https://www.avito.ru/moskva/mebel_i_interer/divan_s_mehanizmom_delfin_2039315793"
]
}
- Для сбоки и запуска нужно выполнить команду
docker-compose up
(можно и даже лучшеdocker-compose up --build
).
После чего будут загружены все нужные библиотеки,
chromedriver, google chrome, созданы таблицы в базе данных. Сам API использует 80ый порт.
Сборка Docker была проверена на Ubuntu.
- API было протестировано на 600 запросах
add/
, из которых некоторые имели 0 объявлений и некоректные регионы, на 600stat/
, и на 400get_top/
. - Тесты можно посмотреть в папке tests
- Для тестирования использовалась библиотека pytest и плагин -cov
- Покрытие составило 100%