https://github.com/rcv911/hacker_news_parser
Simple parser
https://github.com/rcv911/hacker_news_parser
aiohttp aiohttp-rest-api docker docker-compose postgresql sqlalchemy
Last synced: 4 months ago
JSON representation
Simple parser
- Host: GitHub
- URL: https://github.com/rcv911/hacker_news_parser
- Owner: rcv911
- Created: 2020-05-09T16:14:19.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-10T15:23:47.000Z (about 6 years ago)
- Last Synced: 2023-11-29T20:43:07.275Z (over 2 years ago)
- Topics: aiohttp, aiohttp-rest-api, docker, docker-compose, postgresql, sqlalchemy
- Language: Python
- Homepage:
- Size: 86.9 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# hacker_news_parser
Приложение, которое периодически парсит главную страницу
[Hacker News](https://news.ycombinator.com/newest),
вытягивая из нее список постов и сохраняя в базу данных.
### Описание
API с одним эндпоинтом:
• /v1/posts - Получение списка новостей из БД
Сервис работает на ``python 3.7``.
Фреймворк для написания API — ``aiohttp``.
Библиотека для создания простенького REST API ``aiohttp_rest_api``
Документация: [https://aiohttp-rest-api.readthedocs.io/](https://aiohttp-rest-api.readthedocs.io/)
Используемая база данных — ``postgresql``.
Конфиг приложения находится: [/config/config.toml](config/config.toml)
Тестирование с помощью ``pytest`` и плагина ``pytest-aiohttp``
## Деплой приложения
Перед деплоем необходимо прописать необходимые параметры в конфиге приложения
[/config/config.toml](config/config.toml):
1) Ввести хост для подключения к БД - `host = '' # ввести ip локальной машины`.
Так как БД раскатывается в docker контейнере
2) Задержка в секундах, с которой приложение будет опрашивать данные (парсить) -
`delay = `, по умолчанию стоит 60 секунд
Для автоматического запуска необходимо выполнить команду: `deploy.sh`
Файл [PostmanCollection](hacker_news_parser.postman_collection.json) содержит
примеры запросов на все API, который можно импортнуть в Postman
## Подробнее об методах API
##### v.0.1.0
• GET http://localhost/v1/posts?order=&sort=&limit=&offset=
order:
сортировка значений в определённом столбце, по умолчанию id
sort:
сортировка, по умолчанию desc
asc - по возрастанию
desc - по убыванию
limit:
лимит данных, по умолчанию 5
offset:
смещение, по умолчанию 0
### Тестирование
Тестирование в папке [/test](/test) командой `pytest -v -s --tb=short test_hnp.py`
### База данных
По умолчанию настроена на порт ``7474``. Так же как и при миграции через
``alembic`` - [sqlalchemy.url](alembic.ini).
Port: 7474
Maintenance database: postgres
Username: postgres
Password: admin
Таблица ``Post`` располагается в схеме ``public``
### Локальный запуск приложения
Настрока через PyCharm:

### Flake8
