Этот проект представляет собой API для парсинга статей с Habr. API реализовано с использованием Django REST Framework (DRF) и асинхронной обработки задач через Celery. Проект поддерживает JWT авторизацию, хранение пользовательской истории запросов, результаты парсинга, а также предоставляет Swagger документацию.
Функционал:
- JWT авторизация
- Асинхронный запуск парсера через Celery
- Хранение истории запросов пользователя
- Хранение результатов парсинга
- Интеграция Swagger для документации API
Что парсится:
- Ссылка на статью
- Заголовок
- Текст статьи
- Дата публикации
- Автор и его контактные данные
- Рейтинг статьи
- Количество добавлений в закладки
- 5 самых популярных комментариев
- Django с Django REST Framework (DRF)
- Celery для асинхронной обработки задач
- Redis как брокер сообщений для Celery
- Docker и Docker Compose для контейнеризации
- PostgreSQL как основная база данных
- Swagger для документации API
-
Клонировать репозиторий:
git clone https://github.com/LestatDamned/Parser-DRF
-
Создайте и активируйте виртуальное окружение:
python -m venv .venv source .venv/bin/activate # для Linux/Mac .venv\Scripts\activate # для Windows
-
Создать файл .env в корневой директории:
SECRET_KEY = 'secret_key' DEBUG = True DJANGO_ALLOWED_HOSTS = 'your_host' CSRF_TRUSTED_ORIGINS = 'http://your_host' SQL_ENGINE="django.db.backends.postgresql" SQL_DATABASE="example" SQL_USER="example" SQL_PASSWORD="password_example" SQL_HOST="db" SQL_PORT="5432" DATABASE="postgres" INTERNAL_IPS = 'your_host'
-
Установите зависимости:
cd app pip install -r requirements.txt
-
Запустить Docker Compose:
docker compose -f docker-compose.yml up --build
-
Создать суперпользователя Django:
docker compose exec web python manage.py createsuperuser
-
Проверить работу API: Откройте браузер и перейдите по адресу http://localhost:8000/schema/swagger/, чтобы ознакомиться с документацией API, предоставляемой Swagger.
-
Тестирование API: Вы можете использовать Postman для тестирования API, отправляя запросы на конечные точки, указанные в документации.