Чекер генерируемых запросов на Golang

Илья6 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
23.11.2022

Язык программирования: Golang

Интерфейс: консоль

Платформа: Windows, Linux, Docker

Необходимо реализовать чекер генерируемых запросов, проверка которых должна осуществляться с помощью GET-запроса, используя список прокси адресов.

Генерация запросов должна осуществляться с помощью горутин, количество которых задается при запуске программы через файл-конфиг. Генерация горутин функций должна осуществляться в бесконечном цикле for {}, ограничивая кол-во горутин с помощью механизма очередей(кол-во в очереди по кол-ву горутин из конфиг файла).

В качестве целевой функции генерации можно использовать функцию генерации случайного числа.

Проверка запроса через произвольный сетевой ресурс осуществляется (тоже в горутине) в виде GET запроса с ответом в формате json.

Реализовать проверку с произвольным json файлом с полем "result": "success(или failed)".

Сетевые запросы необходимо осуществлять с помощью списка прокси адресов, подгружаемых по указанному url в конфиге.

Реализовать автоматическую смену (для осуществления запроса) и удаление нерабочего прокси адреса из пула загруженных адресов.

Обновление списка прокси серверов должно проводиться на горячую для всех запускаемых горутин (возможно, целесообразно использовать указатель на список адресов).

Реализовать модуль оповещения в случае успешной проверки в виде оповещения через Telegram бота.

Успешные срабатывания необходимо дублировать в отдельный файл success.txt с содержимым запроса(результат функции) и ответом с сервера(ответ GET запроса).

В консоли должна отображаться статистика о количестве генерируемых запросов и сетевых проверок + средние показатели по этим параметрам.

Вывод данной информации и возможные ошибки необходимо записывать в суточные лог файлы.

Программа должна пробовать автоматически перезапускаться при появляющейся ошибке 3 раза, иначе оставить программу запущенной со статусом "error" и включенным сетевым REST-интерфейсом (см. ниже).

В программе необходимо сохранять статистику (загружать при запуске программы):

- количество успешных срабатываний с момента запуска

- последняя скорость генерации целевой функции и сетевых запросов (кол-во/сек)

- средняя скорость  скорость генерации целевой функции и сетевых запросов (кол-во/сек)

Файл конфигурации должен включать в себя:

- запуск парсера при старте (on, off)

- кол-во запускаемых горутин

- целевая ссылка на ресурс для проверки сгенерированных результатов целевой функции

- url-адрес на список прокси серверов

- id чата для телеграм бота

- token телеграм бота

- порт для REST интерфейса

Также необходимо реализовать возможность изменять параметры через REST сервер (любой фреймворк, можно echo):

/status - GET/POST (отображать/задавать(останавливать и запускать) статус программы: enabled, stopped, error)

/thread_count - GET/POST (количество запускаемых горутин)

/proxy_list_url - GET/POST (url-адрес на список прокси)

/proxy_list - GET/POST (получить/задать/обновить список прокси адресов)

/check_url - GET/POST (url-адрес для проверки с использованием прокси)

/telegram_id - GET/POST (id телеграм чата для отчета)

/telegram_token - GET/POST (токен телеграм бота)

/logs - GET (вернуть файл-отчет за последние сутки)

/stats - GET (вывести статистику по скорости генерации запросов и сетевых проверок за секунду + среднюю статистику по этим показателям + количество успешных срабатываний)

/stats_clear - POST (очистка сохраняемой статистики)

Исходный код должен быть подробно закомментирован для последующего разбора и доработки.

Заявки фрилансеров