O Tornado expõe uma única interface de cliente HTTP assíncrona, sob a qual existem implementações diferentes. Por isso, as opções de proxy podem falhar por causa da implementação escolhida mesmo quando o endpoint do proxy está correto.

A documentação do cliente HTTP identifica SimpleAsyncHTTPClient como a implementação padrão e documenta a alternativa baseada em curl. As opções de requisição como proxy_host têm notas de suporte específicas de cada implementação. Leia essas notas antes de adicionar opções a uma chamada fetch.

Configure antes de construir o cliente

Num ambiente que já tem o backend curl, uma aplicação pode selecioná-lo antes de criar o seu cliente compartilhado:

from tornado.httpclient import AsyncHTTPClient

AsyncHTTPClient.configure('tornado.curl_httpclient.CurlAsyncHTTPClient')
client = AsyncHTTPClient()

Depois use as opções de requisição documentadas para host, porta, autenticação e tempo limite do proxy na chamada pretendida. Mantenha o nome do host separado da porta numérica. Escolher o backend não escolhe por si só um endpoint de proxy. Para uma rota HTTP pública permitida, a lista de proxies HTTP fornece candidatos de host e porta para essas opções de requisição.

A construção do cliente importa porque uma aplicação ou framework pode criar e manter um cliente HTTP antes de este código ser executado. Inspecione a instância real usada na requisição que falhou em vez de construir outro cliente depois e presumir que ele explica o primeiro.

Para diagnóstico, registre o backend ativo e a versão da biblioteca subjacente junto com a etapa que falhou. Distinga uma opção de requisição sem suporte de um tempo limite de rede e de uma resposta HTTP devolvida pelo proxy. Essas observações levam a correções diferentes.

Artigos relacionados