Python - ใช้การเชื่อมต่อซ้ำ

เมื่อไคลเอนต์ส่งคำขอที่ถูกต้องไปยังเซิร์ฟเวอร์จะมีการสร้างการเชื่อมต่อชั่วคราวระหว่างกันเพื่อดำเนินการส่งและรับให้เสร็จสิ้น แต่มีสถานการณ์ที่การเชื่อมต่อจำเป็นต้องมีชีวิตอยู่เนื่องจากจำเป็นต้องมีการร้องขออัตโนมัติและการตอบสนองระหว่างโปรแกรมที่กำลังสื่อสารกัน ยกตัวอย่างเช่นหน้าเว็บแบบโต้ตอบ หลังจากโหลดหน้าเว็บแล้วคุณจำเป็นต้องส่งข้อมูลแบบฟอร์มหรือดาวน์โหลดส่วนประกอบ CSS และ JavaScript เพิ่มเติม การเชื่อมต่อจะต้องคงอยู่เพื่อประสิทธิภาพที่เร็วขึ้นและการสื่อสารที่ไม่ขาดตอนระหว่างไคลเอนต์และเซิร์ฟเวอร์

Python ให้ urllib3โมดูลที่มีวิธีการดูแลการใช้การเชื่อมต่อซ้ำระหว่างไคลเอนต์และเซิร์ฟเวอร์ ในตัวอย่างด้านล่างเราสร้างการเชื่อมต่อและสร้างคำขอหลายรายการโดยส่งผ่านพารามิเตอร์ที่แตกต่างกันด้วยคำขอ GET เราได้รับการตอบกลับหลายครั้ง แต่เรายังนับจำนวนการเชื่อมต่อที่ใช้ในกระบวนการด้วย ดังที่เราเห็นว่าจำนวนการเชื่อมต่อไม่เปลี่ยนแปลงซึ่งหมายความถึงการนำการเชื่อมต่อกลับมาใช้ใหม่

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

เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -

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