Junior — Middle
Quais métodos podem ser usados para restaurar rapidamente a execução de uma consulta em caso de falha ou atraso?
sobes.tech IA
Resposta da IA
Para uma recuperação rápida da execução da consulta em caso de falha ou atraso em Python, pode usar várias abordagens:
-
Repetições (Retry)
- Envolver a chamada num ciclo com um número limitado de tentativas.
- Utilizar bibliotecas, por exemplo,
retryingoutenacity, que permitem configurar reintentos com atrasos de forma flexível.
-
Temporizadores (Timeouts)
- Definir tempos limite nas requisições de rede (por exemplo, em
requestsatravés do parâmetrotimeout) para não esperar indefinidamente.
- Definir tempos limite nas requisições de rede (por exemplo, em
-
Execução assíncrona
- Usar
asynciopara fazer requisições com possibilidade de cancelamento ou troca para outras tarefas.
- Usar
-
Tratamento de exceções
- Capturar exceções relacionadas a erros de rede ou tempos limite, e tentar novamente.
Exemplo usando a biblioteca tenacity:
from tenacity import retry, stop_after_attempt, wait_fixed
import requests
@retry(stop=stop_after_attempt(3), wait=wait_fixed(2))
def fetch_url(url):
response = requests.get(url, timeout=5)
response.raise_for_status()
return response.text
try:
data = fetch_url('https://example.com')
except Exception as e:
print(f"Não foi possível obter os dados: {e}")
Este código tentará fazer a requisição até 3 vezes com uma pausa de 2 segundos entre tentativas.