Чекер генерируемых запросов на Golang
Язык программирования: 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 (очистка сохраняемой статистики)
Исходный код должен быть подробно закомментирован для последующего разбора и доработки.