Прокси опциите на Tornado изискват правилния HTTP backend
Проверете активната реализация на HTTP клиента в Tornado, преди да настроите опциите за заявка през прокси.
Tornado предоставя един асинхронен интерфейс на HTTP клиент, под който стоят различни реализации. Затова прокси опциите могат да се провалят заради избраната реализация, дори когато крайната точка на проксито е правилна.
В документацията за HTTP клиента SimpleAsyncHTTPClient е посочен като реализация по подразбиране, а алтернативата, базирана на curl, също е документирана. Опциите за заявка като proxy_host имат бележки за поддръжка, специфични за реализацията. Прочетете тези бележки, преди да добавите опции към извикване на fetch.
Конфигурирайте преди създаването на клиента
В среда, която вече разполага с backend curl, приложението може да го избере, преди да създаде своя споделен клиент:
from tornado.httpclient import AsyncHTTPClient
AsyncHTTPClient.configure('tornado.curl_httpclient.CurlAsyncHTTPClient')
client = AsyncHTTPClient()
След това използвайте документираните опции за заявка за хост, порт, удостоверяване и изчакване за желаното извикване. Дръжте името на хоста отделно от цифровия порт. Изборът на backend сам по себе си не избира крайна точка на прокси. За разрешен публичен HTTP маршрут списъкът с HTTP проксита предоставя кандидати за хост и порт за тези опции за заявка.
Създаването на клиента е важно, защото приложение или framework може да създаде и задържи HTTP клиент, преди този код да се изпълни. Проверете действителния екземпляр, използван при неуспешната заявка, вместо по-късно да създавате друг клиент и да предполагате, че той обяснява първия.
За диагностика запишете активния backend и версията на основната му библиотека заедно с етапа, на който е станала грешката. Различавайте неподдържана опция за заявка от мрежово изчакване и от HTTP отговор, върнат от проксито. Тези наблюдения водят до различни поправки.