urllib3是线程安全的连接池和文件后支持Python的HTTP库。
亮点:
  *重新使用的多个请求相同的插座连接(HTTPConnectionPool)
  *文件发布(encode_multipart_formdata)
  *内置重定向和重试(可选)
  *线程安全
什么是错的urllib和urllib2的?
有两个重要的功能从Python标准库丢失:连接重复使用/池和文件发布。这是不是非常难实现这些自己,但它更容易使用已经做了工作,你的模块。
Python标准库的urllib和urllib2的关系不大对方。它们被设计为独立的,独立的,每一个解决问题的一个不同的范围,并urllib3遵循类似的静脉中。
我为什么要重用连接?
性能。当你通常做的urllib电话,与每个请求创建一个单独的套接字连接。通过重用现有的插座(因为HTTP 1.1的支持),请求将占用更少的资源在服务器的终端,并提供更快的响应时间,在客户端的结束。用一些简单的基准测试(见测试/ benchmark.py),从google.com下载网址15的两倍左右的速度在使用HTTPConnectionPool(使用1连接),比使用普通的urllib(使用15个连接)。
这个库是完美的:
  *谈起的API
  *爬行网站
  *任何地方能够发布文件,处理重定向和重试的情况是非常有用的。它的相对轻量级的,因此它可用于任何东西!
例子:
转至例子维基更漂亮的语法高亮的例子。
但是,长话短说:
从urllib3进口HTTPConnectionPool
API_URL ='http://ajax.googleapis.com/ajax/services/search/web“
http_pool = HTTPConnectionPool.from_url(API_URL)
田= {'V':'1.0','Q':'urllib3'}
R = http_pool.get_url(API_URL,域)
打印r.status,r.data p>
什么是此版本中的新:
- 在新增urllib3.add_stderr_logger()快速让STDERR调试日志urllib3。
- 在本机全解析URL(包括身份验证,路径,查询,片段)提供urllib3.util.parse_url(URL)。
- 在内置的重定向将切换方法,“GET”如果状态代码为303(问题#11)
- 在urllib3.PoolManager条发送请求的URI之前,计划和主机。 (第8号)
- 在新urllib3.exceptions.DecodeError例外的时候自动解码的基础上,Content-Type头,失败。
- 修正了池枯竭和泄漏的连接(第76#)的bug。增加了明确的连接关上池驱逐。添加urllib3.PoolManager.clear()。
- 在99% - > 100%的单元测试覆盖率。
什么在1.4版本的新:
- 在小AppEngine上相关的修正
- 从mimetools.choose_boundary切换到uuid.uuid4()。
- 在改进URL解析。 (问题#73)
- 在IPv6的地址支持。 (问题#72)
什么版本1.3是新的:
- 在删除前1.0弃用API
- 在重构佣工成urllib3.util子模块。
- 修正了多部分编码,以支持具有多个值的键列表的元组。 (第48号)
- 在回应固定多的Set-Cookie头没有得到在Python 3合并正确(第53号)
- 在AppEngine上的支持与Py27。 (问题#61)
- 在小encode_multipart_formdata修复。
涉及到Python 3串VS字节
什么版本1.2.2的新:
- 在不出货测试要求固定包装的bug。 txt。 (问题#47)
什么在1.2.1版本新:
- 在固定与另一错误时,SSL模块不可用。 (第41号)
- 在位置解析错误,现在提高urllib3.exceptions.LocationParseError它继承自ValueError错误。
什么版本1.2是新的:
- 在添加的Python 3支持(3.2.2测试)
- 在丢弃的Python 2.5的支持(在2.6.7测试2.7.2)
- 使用select.poll而不是select.select为支持它的平台。
- 使用Queue.LifoQueue代替Queue.Queue更积极的连接复用。配置通过覆盖ConnectionPool.QueueCls。
- 在固定的ImportError在安装过程中,当SSL模块不可用。 (第41号)
- 在固定PoolManager方案(如HTTP - > HTTPS)之间的重定向不正确完成。 (问题#28,在V1.1问题#10破获)
- 在阀块dummyserver使用webob + eventlet龙卷风来代替。去除多余的不支持dummyserver测试后端。加插座级测试。
- 在更多的测试。成就解锁:99%的覆盖率
什么是1.1版本,新的:
- 在重构dummyserver到自己的根命名空间模块(用于测试)。
- 添加主机名核查VerifiedHTTPSConnection通过vendoring在Py32的ssl_match_hostname。 (第25号)
- 在固定跨主机HTTP使用PoolManager时重定向。 (第10号)
- 在固定decode_content被忽略。 (第27号)
- 在固定超时相关的错误。 (问题#17,#23)
在通过的urlopen设置
什么是1.0.2版本,新的:
- 在VerifiedHTTPSConnection固定错字,因为这只会存在一个如果你手动使用对象错误。 (感谢pyos)
- 在制造RecentlyUsedContainer(因此PoolManager)更多的线程安全通过在包装互斥访问日志。 (感谢@christer)
- 在制造RecentlyUsedContainer更多的字典类(修正__delitem__和__getitem__行为),以测试。应该不会影响核心urllib3代码。
什么是1.0.1版本,新的:
- 修正了相同的连接将获得返回的错误入池两次,导致多余的" HttpConnectionPool充满"记录警告。
要求:
- 在Python中
评论没有发现