Скрипт на GOLANG

500 руб. за проект
01 марта 2020, 11:44 • 7 откликов • 82 просмотра
Необходимо разработать скрипт работающий с внешним API.
Скрипт берет исходные данные из файла построчно, это значения по которым будем запрашивать API их будет 100-1000 шт. в файле. Есть ограничение по одновременному вызову API (100 одновременно с одного API KEY), но есть несколько API KEY. Для каждого запроса API возвращает JSON в котором есть список ID и курсор если есть еще данные. Необходимо для каждого исходного значения получить все данные при этом максимально использовать имеющиеся ресурсы (использовать максимально API). Все полученные данные со всех значений сохранить в памяти как список без повторений (как set в python), затем записать в файл.

Как я вижу реализацию (как вариант предлагайте свой):
1. Читаем исходный файл, для каждой строки запускаем горутину
2. Горутина отправляет запрос в "WorkerPool"
3. WorkerPool следит за имеющимися ресурсами сколько на каком API KEY сейчас работает активных запросов и запускает воркер на свободном (где меньше 100 запросов на данный момент)
4. Worker делает запрос данные попадают в горутину из п.2
5. Если ошибка запроса то повторяем п.2, если все ок горутина парсит JSON, складывает данные по ID в set
6. Если в JSON есть курсор, то делаем запрос из п.2 с курсором (отправляется как get параметр, как пример "api_url/item/?cursor=123")
7. Повторяем с п.5
8. Когда все горутины отработали, объединяем все списки горутин в один и сохраняем в файл.
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
Работа выполнена отлично, рекомендую. Все быстро, качественно и в соответствии с ТЗ.
~ 4 года назад