Приложение, которое периодически парсит главную страницу Hacker News, вытягивая из нее список постов и сохраняя в базу данных.
API с одним эндпоинтом:
• /v1/posts - Получение списка новостей из БД
Сервис работает на python 3.7
.
Фреймворк для написания API — aiohttp
.
Библиотека для создания простенького REST API aiohttp_rest_api
Документация: https://aiohttp-rest-api.readthedocs.io/
Используемая база данных — postgresql
.
Конфиг приложения находится: /config/config.toml
Тестирование с помощью pytest
и плагина pytest-aiohttp
Перед деплоем необходимо прописать необходимые параметры в конфиге приложения /config/config.toml:
-
Ввести хост для подключения к БД -
host = '' # ввести ip локальной машины
. Так как БД раскатывается в docker контейнере -
Задержка в секундах, с которой приложение будет опрашивать данные (парсить) -
delay = <value>
, по умолчанию стоит 60 секунд
Для автоматического запуска необходимо выполнить команду: deploy.sh
Файл PostmanCollection содержит примеры запросов на все API, который можно импортнуть в Postman
• GET http://localhost/v1/posts?order=<name>&sort=<name>&limit=<value>&offset=<value>
order:
сортировка значений в определённом столбце, по умолчанию id
sort:
сортировка, по умолчанию desc
asc - по возрастанию
desc - по убыванию
limit:
лимит данных, по умолчанию 5
offset:
смещение, по умолчанию 0
Тестирование в папке /test командой pytest -v -s --tb=short test_hnp.py
По умолчанию настроена на порт 7474
. Так же как и при миграции через
alembic
- sqlalchemy.url.
Port: 7474
Maintenance database: postgres
Username: postgres
Password: admin
Таблица Post
располагается в схеме public
Настрока через PyCharm: