Python的HTTP/2客户端
项目描述
这是一个临时发布版本,直到原始软件包以版本 < 0.7.0 发布。在那之后,将删除此发布。
HTTP正在我们脚下改变。我们老朋友HTTP/1.1正在被全新的HTTP/2标准所补充。HTTP/2提供了许多好处:提高速度、降低带宽使用率、更好的连接管理等等。
hyper将为您的Python代码提供这些好处。如何?就像这样
from hypertemp import HTTPConnection conn = HTTPConnection('nghttp2.org:443') conn.request('GET', '/httpbin/get') resp = conn.get_response() print(resp.read())
简单。
小心行事!
请小心:hyper处于非常早期的alpha阶段。您在使用它时肯定会遇到错误。此外,还有很多粗糙的边缘。话虽如此,请在您的应用程序中尝试它:我需要您的反馈来修复错误和磨平粗糙的边缘。
版本
hyper支持HTTP/2规范的最终草案:此外,它还支持HTTP/2规范的14、15和16个草案。它还支持HPACK规范的最终草案。
兼容性
hyper旨在作为http.client的替换品,具有类似的API。然而,hyper故意没有以与http.client相同的方式命名其类。这是因为大多数服务器目前都不支持HTTP/2:我不想您在需要http.client时意外使用hyper。
文档
想要了解更多?关于 hyper 的文档可以在 Read the Docs 上找到。
贡献
hyper 欢迎任何人的贡献!与许多其他项目不同,我们乐于接受外观贡献和小的贡献,除了大型功能请求和变更。
在您贡献之前(无论是通过打开一个问题还是提交一个 pull request),请 阅读贡献指南。
许可
hyper 在 MIT 许可下提供。更多详情,请参阅存储库中的 LICENSE 文件。
发行历史
dev
错误修复
当最后一个数据块的长度等于 MAX_CHUNK 时,设置流结束标志。
v0.7.0 (2016-09-27)
主要变更
添加了 ping 方法,允许用户在发出请求之前、之间或之后使用 HTTP/2 PING 帧来检查连接的活跃性。
错误修复
不要在关闭的流上发送 WINDOWUPDATE 帧。
清理流关闭时的未完成的流读取。
确保在流关闭时无条件地重置连接状态,无论连接是否有打开的套接字对象。
0.6.2 (2016-06-13)
错误修复
修复了上一个版本中犯的错误。
0.6.1 (2016-06-13)
错误修复
尝试发送 RST_STREAM 帧时容忍错误。
确保在兼容 SSLSocket 对象上调用 fileno() 实际上工作正确。感谢 @benlast!
改进了 Stream 类中的一些线程安全问题。感谢 @fredthomsen!
允许系统在未提供捆绑证书文件的情况下使用 hyper。感谢 @JasonGowthorpe!
0.6.0 (2016-05-06)
主要变更
只要在所有方法调用中使用流 ID,HTTP20Connection 对象现在是线程安全的。
完全替换了 HTTP/2 状态机逻辑以使用 hyper-h2。这将极大地改变库在许多情况下的行为,大部分是更好的。然而,这也可能引入新的错误,所以请谨慎。
API 变更
允许在 request 中使用非字典标题。
HTTP20Connection 现在有 force_proto 关键字参数,允许 HTTP20Connection 忽略 NPN/ALPN 结果。
现在,CLI 标志 --h2 忽略了 NPN/ALPN 协商的结果,当访问 HTTPS URL 时。
添加了对 HTTPS 客户端证书的支持。
有关流被重置的通知现在被延迟,直到相关流下一次被访问时才触发,而不是立即触发。
错误修复
不再导致包含特殊标题的非法标题块。
大幅提高了 IPv6 支持。
修复了在 Python 2.7 上将 Unicode 主体转换为字节字符串的问题。
允许从 CLI 覆盖 HTTP/2 伪标题。
修复了不正确生成 HTTP2-Settings 标题的问题。
改进了对套接字错误的处理。
0.5.0 (2015-10-11)
功能增强
注意来自远程对等方的最大帧长度更改。感谢 @jdecuyper!
错误修复
防止 hyper 发出过大的帧。感谢 @jdecuyper!
防止 hyper 在完成消耗流时发出 RST_STREAM 帧。
防止 hyper 发出大量的 RST_STREAM 帧。
Hyper CLI 工具现在正确使用 TLS 任何 https-schemed URL。
Hyper CLI 工具不再尝试解码字节,而是直接将它们写入终端。
向Hyper CLI工具添加了新的--h2标志,允许直接使用明文HTTP/2,而不是尝试从HTTP/1.1升级。
在get_response的抽象版本中允许参数和关键字参数。
软件更新
更新hyperframe到版本2.1.0
0.4.0 (2015-06-21)
新功能
HTTP/1.1和HTTP/2抽象层。不需要指定要使用哪个版本,只需自动获取服务器支持的最佳版本即可!
支持将明文HTTP/1.1升级为明文HTTP/2,感谢@fredthomsen! (问题#28)
HTTP11Connection和HTTPConnection对象现在都是上下文管理器。
当使用PyOpenSSL时,增加了对ALPN协商的支持。 (问题#31)
增加了对用户提供的SSLContext对象的支持,感谢@jdecuyper! (问题#8)
更好地支持HTTP/2错误代码,感谢@jdecuyper! (问题#119)
更优雅地关闭连接,感谢@jdecuyper! (问题#15)
结构变更
将帧和HPACK层提取出来形成独立的库。
错误修复
当使用PyOpenSSL时,正确验证主机名。
0.3.1 (2015-04-03)
错误修复
修复了阻塞的ImportError。 (问题#114)
0.3.0 (2015-04-03)
新功能
支持HTTP/1.1!更多信息请参阅文档。 (问题#75)
实现了一个HTTPHeaderMap数据结构,它提供了字典风格的查找,同时保留了所有HTTP头的语义信息。
主要变更
HTTP/2 API的多个更改
从响应对象上移除了getheader、getheaders、gettrailer和gettrailers方法,取而代之的是简单的.headers和.trailers属性,它们包含HTTPHeaderMap结构。
头和尾现在是由字节组成的字符串,而不是Unicode字符串。
为响应对象添加了iter_chunked()方法,允许以单个数据帧为单位迭代数据。
将getresponse()的名称更改为get_response(),因为getresponse()是httplib强迫我使用的糟糕名称。
0.2.2 (2015-04-03)
错误修复
Hyper现在正确处理了“从未索引”的头字段。 (问题#110)
0.2.1 (2015-03-29)
新功能
现在有一个名为hyper的命令行客户端,它支持从命令行直接发出HTTP/2请求。
主要变更
支持HTTP/2和HPACK的最终草案。更新以提供“h2”ALPN令牌。
小更改
我们不仅移除了连接头,还移除了它所引用的所有头。
0.2.0 (2015-02-07)
主要变更
现在完全支持Python 2.7.9。
0.1.2 (2015-02-07)
小更改
如果提供给我们,我们现在会移除Connection头,因为HTTP/2中该头无效。
错误修复
为HTTPie添加了绕过方法,以便使我们的响应看起来更像urllib3响应。
0.1.1 (2015-02-06)
小更改
支持HTTP/2草案15和16。不放弃对草案14的支持。
更新了捆绑的证书文件。
错误修复
0.1.0 (2014-08-16)
回归和已知问题
由于 Python 3.3 的 ssl 模块缺少功能,Python 3.3 的支持已被临时取消。PyOpenSSL 已被确定为替代方案,但在 NPN 支持合并之前无法使用。当 PyOpenSSL 适合的版本发布时,Python 3.3 的支持将重新添加。
从技术上讲,此版本还包括对 PyPy 和 Python 2.7 的支持。该支持也受 PyOpenSSL 适合版本的限制。
有关这些回归的更多信息,请参阅 问题 #37。
主要变更
支持 HPACK 草案 9。
支持 HTTP/2 草案 14。
支持服务器推送,感谢 @alekstorm。(问题 #40)
使用缓冲套接字以避免不必要的系统调用。(问题 #56)
添加 HTTP20Response.gettrailer() 和 HTTP20Response.gettrailers(),支持下载和检查 HTTP 尾部。 (部分讨论在 问题 #71 中。)
错误修复
0.0.4 (2014-03-08)
添加逻辑以管理可插拔对象用于连接和流的双向流控制窗口。
当我们无法将 Huffman 编码的字符串有效映射时,引发新的 HPACKDecodingError。
正确尊重 HPACK EOS 字符。
0.0.3 (2014-02-26)
0.0.2 (2014-02-20)
0.0.1 (2014-02-11)
初始发布
支持 HTTP/2.0 草案 09。
支持 HPACK 草案 05。
支持 HTTP/2.0 流量控制。
验证 TLS 证书。
支持流式上传。
支持流式下载。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
hypertemp-0.8.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1bb6226a9a71f59958eb41dce546e3cc23ce8c3cfe7b6eb119c04f3e301268bd |
|
MD5 | 367157b0a75565722542a3fbd688a097 |
|
BLAKE2b-256 | 8b26d6e9a508f72730b99608ae48a868770b00a4f7435ba721fabe3fedca5c13 |
hypertemp-0.8.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fdf85437c9e819be346eb800a1a7b494b0de96524532a77e39eee9f6c2ba44e4 |
|
MD5 | 0e111417b521325f98a580d6f814d8e7 |
|
BLAKE2b-256 | c02832fd01d899052874a0b435b41ba686120be4a0a4851328f84ccb13a0cbfa |