Olá, Diego!
Pelo que você descreveu, parece que você está lidando com um problema comum ao trabalhar com APIs: o limite de taxa (Rate Limit).
Aqui estão algumas sugestões que podem te ajudar:
- Temporizador: Você pode usar a função
time.sleep()
do Python para fazer uma pausa entre as solicitações. Por exemplo, se a API permite 100 solicitações por minuto, você pode fazer uma pausa de 0,6 segundos entre as solicitações para não exceder o limite. Aqui está um exemplo:
import time
import requests
for i in range(100):
response = requests.get('URL da API')
# processa a resposta
time.sleep(0.6)
- Backoff Exponencial: Este é um algoritmo que aumenta o tempo de espera entre as tentativas de solicitação cada vez que uma solicitação falha devido ao limite de taxa. Existem bibliotecas Python como o
backoff
que podem ajudar com isso.
Exemplo de uso da backoff:
import requests
import backoff
# Função que faz uma solicitação HTTP usando a biblioteca 'requests'
@backoff.on_exception(backoff.expo, requests.exceptions.RequestException, max_tries=3)
def make_request():
url = 'https://api.example.com/some_endpoint'
response = requests.get(url)
response.raise_for_status() # Lança uma exceção se a resposta for um erro HTTP
return response.json()
try:
data = make_request()
print('Dados recebidos com sucesso:', data)
except backoff.MaxRetriesExceeded:
print('Não foi possível obter os dados após várias tentativas.')
except requests.exceptions.RequestException as e:
print('Erro na solicitação:', e)
Espero ter ajudado e bons estudos!