一个纯python,自带http/1.1的i/o实现
h11的Python项目详细描述
FAQ
为什么? < /P>
我想在 古玩 和 三人组 ,当时没有任何 http库。所以我想,没什么大不了的,python有,大概,一打 不同的http实现,我当然可以找到一个 可重复使用的。我没有找到,但我找到了科里的武器召唤 博客帖子。所以我想,好吧,好吧,如果我必须从 刮伤,至少我可以确保没有人再这样了。
我应该用它吗? < /P> 也许吧。你应该知道这是一个非常年轻的项目。但是,它是 功能齐全,拥有详尽的测试套件和完整的文档, 所以下一步是让人们试着用它看看它是怎么回事 :-)如果你愿意,请告诉我们-如果没有其他我们想要的 在做任何不兼容的更改之前与您交谈!
有哪些特点/限制? < /P>
粗略地说,它试图成为一个强大的,完整的,非黑客的 http/1.1规范的第一个"章节"的实现:rfc 7230: http/1.1消息语法和路由。也就是说,它主要集中在 在连接和断开字节的级别上实现http, 以及与之相关的标题,并试图分析规范 一致性。它不知道像url这样的高层关注点 路由、条件获取、跨源Cookie策略或内容 谈判。但它知道如何处理框架, 保持活动处理中的跨版本差异,以及"过时的 折线法则,这样你就可以把精力集中在/ 应用程序的有趣部分,它试图支持 所有有用的http/1.1规范 应用程序应该能够使用h11。
它是纯python,并且没有标准之外的依赖项 图书馆. < /P>
它有一个测试套件,对语句和 分支机构。
目前它支持Python3(在3.4-3.7上测试)、Python2.7和Pypy。 (最初它有一个cython包装器,用于http解析器和一个漂亮的嵌套状态 用 从 屈服来实现输出后处理的机器。但是 我不得不去掉这些——新的解析器需要更少的代码行 而旧的解析器包装器是用纯python编写的,不使用 外来语句法,并具有更多的特点。真的很伤心 旧的国家机器真的很光滑。我只需要几句话 为之哀悼。)
我不知道有多快。我还没有对它进行基准测试或分析, 所以可能有一些毫无意义的热点,我一直在尝试 错误地站在简单性和健壮性的一边而不是 微观优化。但在建筑层面我努力 避免根本性的错误决定,例如,我相信 解析算法即使在面对病态时也保持线性时间 像slowloris这样的输入,没有逐字节循环。(我也 相信它在面对 任意/病理输入。)
整个图书馆大约有800行代码。你可以阅读和理解 不到一个小时就搞定了。大部分能源投资于 到目前为止,我们一直在努力使事情简单化 最小化特殊情况和特殊状态操作;即使 现在已经很小很简单了,我还是很生气我没有 想办法把它变得更小更简单。(不幸的是, http本身并不简单。)
这个api的功能已经完成了,我不希望有一般的概要 改变很多,但是你不能判断一个api的人体工程学直到你 实际上记录并使用它,所以我希望 细节:
我该怎么试试? < /P>
$ pip install h11
$ git clone git@github.com:python-hyper/h11
$ cd h11/examples
$ python basic-client.py
从那里出发。
执照? < /P>
麻省理工学院< /P>
行为准则? < /P>
请投稿人关注我们的="https://github.com/python-hyper/h11/blob/master/code_of_conduct.md" rel="nofollow">行为准则 所有项目空间。