Tôi đã đoạn mã sau đó tạo ra một HTTPConnectionPool sử dụng khuôn khổ TwistedMatrix Python, và một đại lý cho các yêu cầu HTTP:Số lượng tối đa của kết nối cho mỗi máy chủ với twisted.web.client.Agent
self.pool = HTTPConnectionPool(reactor, persistent=True)
self.pool.retryAutomatically = False
self.pool.maxPersistentPerHost = 1
self.agent = Agent(reactor, pool=self.pool)
sau đó tôi có thể tạo yêu cầu kết nối đến một máy chủ địa phương:
d = self.agent.request(
"GET",
url,
Headers({"Host": ["localhost:8333"]}),
None)
vấn đề là: các máy chủ địa phương đôi khi cư xử không chính xác khi nhiều yêu cầu đồng thời được thực hiện, vì vậy tôi muốn giới hạn số lượng yêu cầu đồng thời để 1.
Yêu cầu bổ sung phải được xếp hàng đợi cho đến khi yêu cầu đang chờ xử lý hoàn tất.
Tôi đã thử với self.pool.maxPersistentPerHost = 1
nhưng không hoạt động.
Twisted.web.client.Không hỗ trợ HTTPConnectionPool giới hạn số lượng kết nối tối đa cho mỗi máy chủ, hoặc tôi có phải tự thực hiện hàng đợi FIFO yêu cầu không?