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-проксі пропонує кандидатів хоста й порту для цих параметрів запиту.

Створення клієнта важливе, бо застосунок або фреймворк може створити й зберегти HTTP-клієнт до виконання цього коду. Дослідіть фактичний екземпляр, використаний у невдалому запиті, замість того щоб пізніше створити інший клієнт і припускати, що він пояснює перший.

Для діагностики запишіть активний backend і версію його базової бібліотеки разом з етапом, на якому стався збій. Відрізняйте непідтримуваний параметр запиту від мережевого тайм-ауту та від HTTP-відповіді, повернутої проксі. Ці спостереження ведуть до різних виправлень.

Схожі статті