rorik302 / Hacker-News

Приложение для сбора постов с сайта https://news.ycombinator.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Инструкция

Приготовления

Сначала нужно создать файл .env по аналогии с файлом .env.example:

SECRET_KEY - ключ проекта.

DEBUG - режим отладки. Допустимые значения - True/False.

ALLOWED_HOSTS - список хостингов, разделенных пробелом.

DB_ENGINE - engine БД. Если не задан, то по-умолчанию используется MySql.

DB_NAME - имя БД.

DB_USER - пользователь для БД.

DB_PASSWORD - пароль для БД.

DB_ROOT_PASSWORD - root пароль для MySql.

DB_HOST - хост БД. Если приложение запускается локально, то нужно указать localhost, или db, если запускается в docker контейнере.

DB_PORT - порт БД. Если не задан, по-умолчанию используется 3306.

Запуск в ручном режиме

Для запуска в ручном режиме нужно создать базу данных и выполнить в консоли несколько команд:

pip install -r requirements.txt - для установки всех необходимых пакетов для работы.

python manage.py migrate - для применения миграций в БД.

python manage.py runserver - для запуска сервера. По-умолчанию адрес http://localhost:8000/.

В отдельной консоли нужно выполнить:

python manage.py add_new_posts [--repeat 600] - для создания задания на поиск и сохранение новых постов. Аргумент --repeat служит для задания повторов. 600 - количество секунд между повторами.

python manage.py process_tasks - для отслеживания и выполнения фоновых задач.

Запуск в docker контейнере

Для запуска приложения в docker контейнере нужно в консоли выполнить команду docker-compose up -d --build при первом запуске, или docker-compose up -d при повторном запуске. Если база данных отсутствует, то она будет создана в папке приложения.

Работа с приложением

curl -X GET http://localhost:8000/posts/ - для получения списка постов. По-умолчанию возвращает 5 записей.

Доступные параметры запроса - order, offset, limit. Параметры можно совмещать.

order - принимает значение поля для сортировки. Доступны значения id, title, url, created. Например, title - для сортировки по заголовку поста по возрастанию в алфавитном порядке, или -title - для сортировки по убыванию.

offset - принимает целые положительные числа. Служит для смещения относительно начала списка постов.

limit - принимает целые положительные числа. Служит для ограничения количества постов.

Если передан параметр, отличный от этих, параметру order передано недопустимое значение, параметрам offset и limit переданы недопустимые значения или слишком большие значения, то будут возвращены соответствующие ошибки.

About

Приложение для сбора постов с сайта https://news.ycombinator.com/


Languages

Language:Python 95.6%Language:Dockerfile 3.6%Language:Shell 0.8%