Como resolver TimeoutError ao lidar com conexões externas?
O erro TimeoutError ocorre quando uma operação que depende de comunicação externa, como chamadas de API ou consultas a bancos de dados, demora mais do que o tempo limite definido.
Exemplo do erro
import requests
try:
response = requests.get('https://exemplo.com', timeout=0.01)
print(response.text)
except requests.exceptions.Timeout:
print("A requisição demorou muito e foi interrompida.")
Esse código gera um erro de timeout porque o tempo limite definido (timeout=0.01
) é muito curto para uma resposta real do servidor.
Como resolver o erro TimeoutError
1. Aumente o tempo limite
Uma solução comum é aumentar o valor do timeout para garantir que a conexão tenha tempo suficiente para ser estabelecida.
response = requests.get('https://exemplo.com', timeout=10) # 10 segundos
2. Implemente tentativas de reconexão
Outra abordagem é criar um mecanismo de retry para repetir a requisição caso ocorra um timeout.
import requests
from requests.exceptions import Timeout
def fazer_requisicao(url, tentativas=3):
for _ in range(tentativas):
try:
response = requests.get(url, timeout=5)
return response.text
except Timeout:
print("Tempo limite excedido. Tentando novamente...")
return "Falha ao obter resposta após múltiplas tentativas."
print(fazer_requisicao('https://exemplo.com'))
Neste código, tentamos realizar a requisição três vezes antes de desistir.
A importância de gerenciar timeouts em conexões externas
Em aplicações que dependem de conexões externas, como APIs e bancos de dados, é fundamental gerenciar timeouts corretamente. Ignorar esse erro pode levar a falhas no sistema e má experiência do usuário.
Algumas aplicações:
- Evitar que aplicações fiquem travadas esperando respostas externas.
- Garantir resiliência ao lidar com conexões instáveis.
- Melhorar a experiência do usuário ao reduzir falhas inesperadas.
Dicas para quem está começando
- Sempre defina um timeout ao fazer requisições externas.
- Implemente tentativas de reconexão para evitar falhas temporárias.
- Monitore logs para identificar problemas frequentes de timeout.

Fernando Antunes
Arquiteto de sistemas e especialista em performance de aplicações Node.js e SQL.
Mais sobre o autor