Это тестовое задание представляет собой разработку парсера данных с использованием GitHub API для извлечения информации о публичных репозиториях.
Парсер должен извлекать основные характеристики каждого репозитория, такие как количество звезд, количество наблюдателей, количество форков и язык программирования. Полученные данные затем должны быть сохранены в базу данных.
Так же создано приложение, где можно получить топ 100 репозиториев по количеству звезд и получить кол-во коммитов для определенного репозитория в промежутке дат.
Python 3.10+
asyncpg
FastAPi
Yandex.Cloud (для развёртывания функции и базы данных)
Warning: Для запуска требуются установленные зависимости:
![Docker-badge]
- Установите и активируйте вирутальное окружение
- Установите зависимости из файла requirements.txt
pip install -r requirements.txt
- Заполните .env file по образцу
#Переменная необходимая для подключения alembic к БД. Используется FastApi контейнером
DATABASE_URL=postgresql+asyncpg://postgres:admin@db:5432/postgres
#Переменные используемые в settings FastApi.
DB_USER=postgres
DB_PASSWORD=admin
DB_NAME=postgres
DB_HOST=localhost
DB_PORT=5432
#Переменные для подключения к базе с YC
NGROK_HOST=*.tcp.eu.ngrok.io
NGROK_PORT=1**89
#Переменные используемые для аутентификации в api.github.com
GH_TOKEN=ghp*******H1TfULxasuC0xg56d
#Переменные для запуска функции
FUNCTION_ID=d4e****52cgbbv
Значение перменных NGROK_HOST, NGROK_PORT можно получить используя. Эти переменные нужны, чтобы облачная функция могла записать значения в БД
ngrok tcp 5432
Значение переменной GH_TOKEN можно получить по ссылке. Это позволит увеличить число запросов для парсера данных.
Значение переменной FUNCTION_ID можно получить после:
- настройки и установки yc. Пошаговая установка по ссылке
- наполения .env файла остальными значениями перменных
- запуска скрипта create_function.sh
Теперь введите команду
yc serverless function list
В разделе ID получите требуемое значение переменной
- Запустите docker-compose.yml файл
docker-compose up -d --build
- Запустите триггер парсера через файл run_timer.sh
Автор: Васильчук Александр