Tornado nabízí jedno asynchronní rozhraní HTTP klienta, pod kterým stojí různé implementace. Volby proxy proto mohou selhat kvůli zvolené implementaci, i když je koncový bod proxy správný.

V dokumentaci HTTP klienta je SimpleAsyncHTTPClient označen jako výchozí implementace a je zde popsána i varianta založená na curl. Volby požadavku jako proxy_host mají poznámky k podpoře specifické pro implementaci. Tyto poznámky si přečtěte dříve, než do volání fetch přidáte volby.

Nastavte konfiguraci před vytvořením klienta

V prostředí, které již má backend curl, jej aplikace může zvolit před vytvořením svého sdíleného klienta:

from tornado.httpclient import AsyncHTTPClient

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

Poté použijte dokumentované volby požadavku pro host, port, ověření a časový limit u zamýšleného volání. Udržujte název hostu oddělený od číselného portu. Volba backendu sama o sobě nevybírá koncový bod proxy. Pro povolenou veřejnou HTTP trasu seznam HTTP proxy poskytuje kandidáty hostu a portu pro tyto volby požadavku.

Na vytvoření klienta záleží, protože aplikace nebo framework může vytvořit a podržet HTTP klienta dříve, než tento kód běží. Prohlédněte si skutečnou instanci použitou u neúspěšného požadavku, místo abyste později vytvořili jiného klienta a předpokládali, že vysvětluje toho prvního.

Pro diagnostiku zaznamenejte aktivní backend a verzi jeho podkladové knihovny spolu s fází, ve které došlo k selhání. Odlište nepodporovanou volbu požadavku od síťového časového limitu a od odpovědi HTTP vrácené proxy. Tato pozorování vedou k různým opravám.

Související články