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