Tornado espone un'unica interfaccia client HTTP asincrona, sotto la quale si trovano implementazioni diverse. Le opzioni proxy possono quindi fallire per l'implementazione scelta anche quando l'endpoint del proxy è corretto.

La documentazione del client HTTP indica SimpleAsyncHTTPClient come implementazione predefinita e documenta l'alternativa basata su curl. Le opzioni di richiesta come proxy_host hanno note di supporto specifiche dell'implementazione. Leggete queste note prima di aggiungere opzioni a una chiamata fetch.

Configurate prima di costruire il client

In un ambiente già dotato del backend curl, un'applicazione può selezionarlo prima di creare il proprio client condiviso:

from tornado.httpclient import AsyncHTTPClient

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

Poi usate le opzioni di richiesta documentate per host, porta, autenticazione e timeout del proxy per la chiamata prevista. Tenete il nome host separato dalla porta numerica. Scegliere il backend non sceglie da solo un endpoint proxy. Per una rotta HTTP pubblica consentita, la lista di proxy HTTP fornisce candidati host e porta per quelle opzioni di richiesta.

La costruzione del client conta perché un'applicazione o un framework può creare e conservare un client HTTP prima che questo codice venga eseguito. Ispezionate l'istanza effettiva usata nella richiesta fallita invece di costruire poi un altro client e supporre che spieghi il primo.

Per la diagnosi, registrate il backend attivo e la versione della libreria sottostante insieme alla fase fallita. Distinguete un'opzione di richiesta non supportata da un timeout di rete e da una risposta HTTP restituita dal proxy. Queste osservazioni portano a correzioni diverse.

Articoli correlati