Python - Tái sử dụng kết nối

Khi máy khách đưa ra yêu cầu hợp lệ đến máy chủ, kết nối tạm thời được thiết lập giữa chúng để hoàn tất quá trình gửi và nhận. Nhưng có những tình huống mà kết nối cần được duy trì vì cần có các yêu cầu và phản hồi tự động giữa các chương trình đang giao tiếp. Lấy ví dụ một trang web tương tác. Sau khi trang web được tải, cần phải gửi dữ liệu biểu mẫu hoặc tải xuống các thành phần CSS và JavaScript khác. Kết nối cần được duy trì để có hiệu suất nhanh hơn và liên lạc không bị gián đoạn giữa máy khách và máy chủ.

Python cung cấp urllib3mô-đun có các phương pháp xử lý việc tái sử dụng kết nối giữa máy khách và máy chủ. Trong ví dụ dưới đây, chúng tôi tạo một kết nối và thực hiện nhiều yêu cầu bằng cách chuyển các tham số khác nhau với yêu cầu GET. Chúng tôi nhận được nhiều phản hồi nhưng chúng tôi cũng tính số lượng kết nối đã được sử dụng trong quá trình này. Như chúng ta thấy số lượng kết nối không thay đổi ngụ ý việc sử dụng lại kết nối.

from urllib3 import HTTPConnectionPool
pool = HTTPConnectionPool('ajax.googleapis.com', maxsize=1)
r = pool.request('GET', '/ajax/services/search/web',
                 fields={'q': 'python', 'v': '1.0'})
print 'Response Status:', r.status
# Header of the response
print 'Header: ',r.headers['content-type']
# Content of the response
print 'Python: ',len(r.data) 
r = pool.request('GET', '/ajax/services/search/web',
             fields={'q': 'php', 'v': '1.0'})
# Content of the response			 
print 'php: ',len(r.data) 
print 'Number of Connections: ',pool.num_connections
print 'Number of requests: ',pool.num_requests

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

Response Status: 200
Header:  text/javascript; charset=utf-8
Python:  211
php:  211
Number of Connections:  1
Number of requests:  2