- Python - 网络编程
- Python - 网络简介
- Python - 网络环境
- Python - 互联网协议
- Python - IP 地址
- Python - DNS 查询
- Python - 路由
- Python - HTTP 请求
- Python - HTTP 响应
- Python - HTTP 头部
- Python - 自定义 HTTP 请求
- Python - 请求状态码
- Python - HTTP 认证
- Python - HTTP 数据下载
- Python - 连接重用
- Python - 网络接口
- Python - 套接字编程
- Python - HTTP 客户端
- Python - HTTP 服务器
- Python - 构建 URL
- Python - Web 表单提交
- Python - 数据库和 SQL
- Python - Telnet
- Python - 邮件消息
- Python - SMTP
- Python - POP3
- Python - IMAP
- Python - SSH
- Python - FTP
- Python - SFTP
- Python - Web 服务器
- Python - 上传数据
- Python - 代理服务器
- Python - 目录列表
- Python - 远程过程调用
- Python - RPC JSON 服务器
- Python - Google 地图
- Python - RSS Feed
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
广告