Скрипт на GOLANG
500 руб. за проект
Необходимо разработать скрипт работающий с внешним 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. Когда все горутины отработали, объединяем все списки горутин в один и сохраняем в файл.
Скрипт берет исходные данные из файла построчно, это значения по которым будем запрашивать 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. Когда все горутины отработали, объединяем все списки горутин в один и сохраняем в файл.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.