Các tùy chọn proxy của Tornado cần đúng HTTP backend
Kiểm tra cách triển khai HTTP client đang hoạt động của Tornado trước khi cấu hình các tùy chọn yêu cầu proxy.
Tornado cung cấp một giao diện HTTP client bất đồng bộ duy nhất, bên dưới là nhiều cách triển khai khác nhau. Vì vậy, các tùy chọn proxy có thể thất bại do cách triển khai đã chọn ngay cả khi điểm cuối proxy là đúng.
Tài liệu HTTP client xác định SimpleAsyncHTTPClient là cách triển khai mặc định và ghi lại lựa chọn thay thế dựa trên curl. Các tùy chọn yêu cầu như proxy_host có ghi chú hỗ trợ riêng cho từng cách triển khai. Hãy đọc các ghi chú đó trước khi thêm tùy chọn vào lời gọi fetch.
Cấu hình trước khi tạo client
Trong môi trường đã có curl backend, ứng dụng có thể chọn nó trước khi tạo client dùng chung:
from tornado.httpclient import AsyncHTTPClient
AsyncHTTPClient.configure('tornado.curl_httpclient.CurlAsyncHTTPClient')
client = AsyncHTTPClient()
Sau đó dùng các tùy chọn yêu cầu đã được ghi lại cho host, cổng, xác thực và thời gian chờ của proxy cho lời gọi dự định. Giữ tên host tách khỏi cổng dạng số. Việc chọn backend không tự chọn điểm cuối proxy. Với một tuyến HTTP công khai được phép, danh sách proxy HTTP cung cấp các ứng viên host và cổng cho những tùy chọn yêu cầu đó.
Việc tạo client rất quan trọng vì ứng dụng hoặc framework có thể tạo và giữ một HTTP client trước khi đoạn mã này chạy. Hãy kiểm tra đúng thực thể được dùng trong yêu cầu thất bại thay vì tạo một client khác sau đó rồi cho rằng nó giải thích cho cái đầu tiên.
Để chẩn đoán, hãy ghi lại backend đang hoạt động và phiên bản thư viện nền của nó cùng với giai đoạn thất bại. Phân biệt tùy chọn yêu cầu không được hỗ trợ với thời gian chờ mạng và với phản hồi HTTP do proxy trả về. Những quan sát đó dẫn đến các cách sửa khác nhau.