Tornado expune o singură interfață de client HTTP asincronă, sub care se află implementări diferite. De aceea, opțiunile proxy pot eșua din cauza implementării alese chiar și atunci când punctul final al proxy-ului este corect.

Documentația clientului HTTP indică SimpleAsyncHTTPClient drept implementarea implicită și documentează alternativa bazată pe curl. Opțiunile cererii precum proxy_host au note de suport specifice implementării. Citiți acele note înainte de a adăuga opțiuni la un apel fetch.

Configurați înainte de a construi clientul

Într-un mediu care are deja backendul curl, o aplicație îl poate selecta înainte de a-și crea clientul partajat:

from tornado.httpclient import AsyncHTTPClient

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

Apoi folosiți opțiunile cererii documentate pentru gazdă, port, autentificare și timeout ale proxy-ului pentru apelul dorit. Țineți numele gazdei separat de portul numeric. Alegerea backendului nu alege de la sine un punct final proxy. Pentru o rută HTTP publică permisă, lista de proxy-uri HTTP oferă candidați de gazdă și port pentru acele opțiuni ale cererii.

Construirea clientului contează pentru că o aplicație sau un framework poate crea și păstra un client HTTP înainte ca acest cod să ruleze. Inspectați instanța reală folosită în cererea eșuată, în loc să construiți alt client după aceea și să presupuneți că îl explică pe primul.

Pentru diagnostic, înregistrați backendul activ și versiunea bibliotecii de bază împreună cu etapa eșuată. Distingeți o opțiune de cerere nesuportată de un timeout de rețea și de un răspuns HTTP returnat de proxy. Aceste observații duc la corecturi diferite.

Articole similare