Tornado-Proxyoptionen brauchen das richtige HTTP-Backend
Prüfen Sie die aktive HTTP-Client-Implementierung von Tornado, bevor Sie Proxy-Anfrageoptionen konfigurieren.
Tornado stellt eine asynchrone HTTP-Client-Schnittstelle bereit, unter der verschiedene Implementierungen liegen. Proxy-Optionen können daher wegen der gewählten Implementierung fehlschlagen, selbst wenn der Proxy-Endpunkt korrekt ist.
Die Dokumentation zum HTTP-Client nennt SimpleAsyncHTTPClient als Standardimplementierung und dokumentiert die curl-basierte Alternative. Anfrageoptionen wie proxy_host haben implementierungsspezifische Hinweise zur Unterstützung. Lesen Sie diese Hinweise, bevor Sie Optionen zu einem fetch-Aufruf hinzufügen.
Vor dem Erzeugen des Clients konfigurieren
In einer Umgebung, die bereits über das curl-Backend verfügt, kann eine Anwendung es auswählen, bevor sie ihren gemeinsamen Client erzeugt:
from tornado.httpclient import AsyncHTTPClient
AsyncHTTPClient.configure('tornado.curl_httpclient.CurlAsyncHTTPClient')
client = AsyncHTTPClient()
Verwenden Sie dann die dokumentierten Anfrageoptionen für Proxy-Host, Port, Authentifizierung und Timeout für den beabsichtigten Aufruf. Halten Sie den Hostnamen vom numerischen Port getrennt. Die Wahl des Backends wählt nicht von sich aus einen Proxy-Endpunkt. Für eine zulässige öffentliche HTTP-Route liefert die HTTP-Proxy-Liste Host- und Port-Kandidaten für diese Anfrageoptionen.
Die Erzeugung des Clients ist wichtig, weil eine Anwendung oder ein Framework einen HTTP-Client erzeugen und behalten kann, bevor dieser Code läuft. Untersuchen Sie die tatsächliche Instanz, die für die fehlgeschlagene Anfrage verwendet wurde, statt später einen weiteren Client zu erzeugen und anzunehmen, er erkläre den ersten.
Zeichnen Sie zur Diagnose das aktive Backend und die Version seiner zugrunde liegenden Bibliothek zusammen mit der fehlgeschlagenen Stufe auf. Unterscheiden Sie eine nicht unterstützte Anfrageoption von einem Netzwerk-Timeout und von einer vom Proxy zurückgegebenen HTTP-Antwort. Diese Beobachtungen führen zu unterschiedlichen Korrekturen.