Tornado nudi jedno asinhrono sučelje HTTP klijenta, a ispod njega stoje različite implementacije. Zato proxy opcije mogu zakazati zbog odabrane implementacije čak i kada je krajnja tačka proxyja ispravna.

Dokumentacija HTTP klijenta navodi SimpleAsyncHTTPClient kao podrazumijevanu implementaciju i dokumentuje alternativu zasnovanu na curlu. Opcije zahtjeva poput proxy_host imaju napomene o podršci specifične za implementaciju. Pročitajte te napomene prije dodavanja opcija u poziv fetch.

Konfigurišite prije stvaranja klijenta

U okruženju koje već ima curl backend, aplikacija ga može odabrati prije stvaranja svog zajedničkog klijenta:

from tornado.httpclient import AsyncHTTPClient

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

Zatim upotrijebite dokumentovane opcije zahtjeva za proxy host, port, autentifikaciju i vremensko ograničenje za predviđeni poziv. Držite ime hosta odvojeno od numeričkog porta. Odabir backenda sam po sebi ne bira krajnju tačku proxyja. Za dozvoljenu javnu HTTP rutu lista HTTP proxyja nudi kandidate za host i port za te opcije zahtjeva.

Stvaranje klijenta je važno jer aplikacija ili framework može stvoriti i zadržati HTTP klijent prije nego se ovaj kod izvrši. Pregledajte stvarnu instancu korišćenu u neuspjelom zahtjevu umjesto da kasnije stvarate drugi klijent i pretpostavljate da on objašnjava prvi.

Za dijagnostiku zabilježite aktivni backend i verziju njegove osnovne biblioteke uz fazu u kojoj je došlo do greške. Razlikujte nepodržanu opciju zahtjeva od mrežnog vremenskog ograničenja i od HTTP odgovora koji je vratio proxy. Ta zapažanja vode različitim ispravkama.

Povezani članci