Tornado udostępnia jeden asynchroniczny interfejs klienta HTTP, pod którym kryją się różne implementacje. Dlatego opcje proxy mogą zawodzić z powodu wybranej implementacji, nawet gdy punkt końcowy proxy jest poprawny.

Dokumentacja klienta HTTP wskazuje SimpleAsyncHTTPClient jako implementację domyślną i dokumentuje alternatywę opartą na curl. Opcje żądania, takie jak proxy_host, mają uwagi dotyczące obsługi charakterystyczne dla implementacji. Przeczytaj te uwagi, zanim dodasz opcje do wywołania fetch.

Skonfiguruj przed utworzeniem klienta

W środowisku, które ma już backend curl, aplikacja może go wybrać przed utworzeniem wspólnego klienta:

from tornado.httpclient import AsyncHTTPClient

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

Następnie użyj udokumentowanych opcji żądania dla hosta, portu, uwierzytelniania i limitu czasu proxy w zamierzonym wywołaniu. Trzymaj nazwę hosta oddzielnie od numerycznego portu. Wybór backendu sam nie wybiera punktu końcowego proxy. Dla dozwolonej publicznej trasy HTTP lista proxy HTTP dostarcza kandydatów hosta i portu dla tych opcji żądania.

Utworzenie klienta ma znaczenie, ponieważ aplikacja lub framework może utworzyć i zachować klienta HTTP, zanim ten kod się uruchomi. Zbadaj rzeczywistą instancję używaną w nieudanym żądaniu, zamiast tworzyć później innego klienta i zakładać, że wyjaśnia on pierwszy.

Do diagnostyki zapisz aktywny backend i wersję jego biblioteki bazowej wraz z etapem, na którym wystąpił błąd. Odróżnij nieobsługiwaną opcję żądania od limitu czasu sieci i od odpowiedzi HTTP zwróconej przez proxy. Te obserwacje prowadzą do różnych poprawek.

Powiązane artykuły