Задать вопрос
@ProgrammDevel

Как создать многопоточную программу обращающиеся к API?

Есть API с ограничениями на запросов в секунду.

Нужно многопоточно обращаться к API и получать нужные значения

Но есть проблема с ограничениями на запросы в секунду от одного ip

Как сделать, чтобы можно было обращаться многопоточно к API?
  • Вопрос задан
  • 188 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
NikFaraday
@NikFaraday
Student full-stack Developer
обращаться многопоточно к API


Многопоточно? Как, блин, потоки с IP связанны? Ну закиньте что-то типа такого:

while(true)
{
    requestTo('https://domail.com') // Async operation without await
}


UPD:

Если стоит ограничение, тогда лучше так:

while(true)
{
speep(100); // API waiting
await requestTo('https://domail.com');
}
Ответ написан
Vindicar
@Vindicar
RTFM!
Причём тут конкретно многопоточность?
Если дело в том, что в нескольких потоках трудно координировать обращения к API, то как выше правильно сказали - делайте очередь запросов (например, queue.SimpleQueue) и отдельный поток, который будет эти запросы выполнять с учётом лимитов.

Например, так: поток-клиент кладёт в очередь словарь вида
task = {'ready': threading.Event(), 'params': {...тут параметры запроса...} }
, а потом делает
task['ready'].wait()
if 'error' in task:
    ... # реагируем на ошибку
else:
    ...  # читаем результат из task['result']

Тогда рабочий поток, реализующий обращения, будет принимать очередное задание из очереди, делать запрос к API согласно содержимому params, потом записывать результат в task['result'] или ошибку в task['error'] и делать task['ready'].set(), чтобы уведомить клиента о том, что его задание завершено.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽