ProxyAgent có thể kết nối nhanh rồi chờ thân phản hồi vô thời hạn. Thời gian chờ kết nối của điểm cuối proxy không mô tả lần chờ sau đó.

Đặt giới hạn kết nối trên điểm cuối khi dựng agent. Với yêu cầu HTTP công khai bên dưới, một ứng viên chưa xác thực từ danh sách proxy HTTP có thể thay thế địa chỉ nếu cho phép trung gian công khai:

endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
                              timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)

Với một phản hồi nhỏ bạn định thu thập trong bộ nhớ, hãy đưa việc đọc thân vào chuỗi Deferred trước khi thêm thời hạn:

from twisted.web.client import readBody

d = agent.request(b'GET', b'http://example.com/')
d.addCallback(readBody)
d.addTimeout(10, reactor)
d.addCallback(lambda body: print(len(body)))
d.addErrback(lambda failure: print(failure.getErrorMessage()))

Đoạn mã giả định ứng dụng đã có reactor và agent được cấu hình. Deferred của yêu cầu ProxyAgent trả về một đối tượng phản hồi; readBody trả về Deferred cho thân. Trả nó từ callback khiến chuỗi cũng chờ thao tác đó.

Vị trí đặt quan trọng. Twisted áp dụng addTimeout cho công việc mà các callback được cài trước đó đại diện. Thêm trình đọc thân sau đó sẽ mô tả một ranh giới khác. Trong cách bố trí này, bộ hẹn giờ bắt đầu khi addTimeout được gọi và bao trùm yêu cầu đang chờ cùng công việc thân trong chuỗi đó.

Dùng trình tiêu thụ dạng luồng cho thân lớn hoặc không giới hạn và biểu diễn việc hoàn tất của nó theo cùng cách. Thời hạn phía máy khách giới hạn thời gian ứng dụng của bạn chờ; nó không cấu hình lại thời gian chờ kết nối thượng nguồn của chính proxy.

Bài viết liên quan