Sobes.tech
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:

  1. Repetições (Retry)

    • Envolver a chamada num ciclo com um número limitado de tentativas.
    • Utilizar bibliotecas, por exemplo, retrying ou tenacity, que permitem configurar reintentos com atrasos de forma flexível.
  2. Temporizadores (Timeouts)

    • Definir tempos limite nas requisições de rede (por exemplo, em requests através do parâmetro timeout) para não esperar indefinidamente.
  3. Execução assíncrona

    • Usar asyncio para fazer requisições com possibilidade de cancelamento ou troca para outras tarefas.
  4. 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.