Sem a reutilização de conexões, cada chamada de API abre uma nova conexão TCP e executa um handshake TLS, o que aumenta a latência. Em cenários de alta concorrência, essa sobrecarga causa timeouts e desperdício de recursos. A reutilização de conexões elimina a configuração repetida, reduzindo a latência e o consumo de recursos.
- Java SDK: Um pool de conexões integrado vem ativado por padrão. Configure parâmetros como limite de conexões e tempos limite.
- Python SDK: Ative a reutilização de conexões passando uma Session personalizada. O SDK suporta chamadas síncronas e assíncronas.
Antes de começar
Antes de executar os exemplos de código:
Java SDK
O Java SDK inclui um pool de conexões integrado, ativado por padrão. Ajuste as configurações de limite de conexões e timeout para otimizar sua carga de trabalho.
Parâmetros
Parâmetro | Descrição | Valor padrão | Unidade |
|---|---|---|---|
connectTimeout | Tempo limite para estabelecimento da conexão. | 120 | segundos |
readTimeout | Tempo limite para leitura de dados. | 300 | segundos |
writeTimeout | Tempo limite para gravação de dados. | 60 | segundos |
connectionIdleTimeout | Tempo limite para conexões ociosas no pool. | 300 | segundos |
connectionPoolSize | Número máximo de conexões no pool. | 32 | conexões |
maximumAsyncRequests | Limite de requisições simultâneas em todos os hosts (limite global). | 32 | requisições |
maximumAsyncRequestsPerHost | Limite de requisições simultâneas por host. | 32 | requisições |
maximumAsyncRequestsdeve ser ≤connectionPoolSize; caso contrário, as requisições podem sofrer bloqueio.maximumAsyncRequestsPerHostdeve ser ≤maximumAsyncRequests.
- connectTimeout: Em cenários de baixa latência, defina um tempo limite menor para reduzir o tempo de espera.
- connectionIdleTimeout: Para cenários de alta concorrência, aumente o tempo limite de ociosidade para evitar a criação frequente de conexões e reduzir o consumo de recursos.
- connectionPoolSize: Poucas conexões em ambientes de alta concorrência causam bloqueios, timeouts e reconexões frequentes (maior uso de recursos). Por outro lado, conexões em excesso sobrecarregam o servidor. Equilibre a quantidade de conexões com base na sua carga de trabalho.
Exemplo de código
O exemplo abaixo configura os parâmetros do pool de conexões (timeout e limite de conexões) e chama um serviço de modelo. Ajuste os parâmetros para otimizar a concorrência e o uso de recursos.
Python SDK
O Python SDK permite a reutilização de conexões ao passar uma Session personalizada. Dois métodos de chamada têm suporte: HTTP assíncrono (baseado em corrotinas) e HTTP síncrono.
HTTP Assíncrono
Para cenários assíncronos, use aiohttp.ClientSession com aiohttp.TCPConnector para ativar a reutilização de conexões. O TCPConnector permite configurar parâmetros como limites de conexão:
Parâmetro | Descrição | Valor padrão | Observações |
|---|---|---|---|
limit | Limite total de conexões (todos os hosts). | 100 | Em cenários de alta concorrência, aumente este valor para melhorar a capacidade de processamento simultâneo. |
limit_per_host | Limite de conexões por host. | 0 (ilimitado) | Evita sobrecarga excessiva em um único host. |
ssl | Configuração do contexto SSL. | None | Validação de certificado SSL para HTTPS. |
Exemplo de código
O exemplo a seguir configura a reutilização de conexões e chama um serviço de modelo de forma assíncrona:
HTTP Síncrono
Em cenários síncronos, use requests.Session para ativar a reutilização de conexões. Múltiplas requisições dentro da mesma Session reaproveitam a conexão TCP subjacente, evitando a sobrecarga de estabelecer conexões repetidamente.
Exemplo de código: chamada única
Este exemplo demonstra a configuração de reutilização de conexões para chamar um serviço de modelo sincronamente:
Exemplo de código: múltiplas chamadas com uma Session compartilhada
Para reutilizar uma Session em várias chamadas:
Melhores práticas
- Java SDK: Defina
connectionPoolSizeemaximumAsyncRequestsconforme sua carga de trabalho. Encontre o equilíbrio na quantidade de conexões: poucas causam bloqueios, enquanto muitas sobrecarregam o servidor. - Python SDK: Utilize a instrução
withpara gerenciar o ciclo de vida da Session e garantir a limpeza correta dos recursos. - Escolha o método adequado: Opte por chamadas assíncronas em aplicações assíncronas (asyncio, FastAPI). Prefira chamadas síncronas para aplicações tradicionais.