一个纯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">行为准则 所有项目空间。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javapojo到org。布森。文件,反之亦然   java突然增加了G1老一代的承诺内存,减少了Eden的大小   java为什么对多个RXJava观察对象不执行并行执行?   java中的枚举是故障安全的吗?如果是,怎么做?   java是等待字符串变为相等的正确方法   java CodeAbbey挑战14个数据输入问题?   在java中的任意位置插入。util。列表   java替换html中的值   java需要帮助破译一个小堆栈跟踪:我使用的是哪种WS?   java Guice依赖项注入器空指针异常   java如何在3D引擎中实现视图剪裁平面?   JavaEclipseRCP:操作与命令需要更新   java如何使用XPAGES DesignerFacesServlet显示泰语字母(以及另一个亚洲/阿拉伯字母)   java装饰器模式问题   java我对空间复杂性的分析正确吗?   不显示java OpenGL ES 2纹理   使用java问题中的wc命令计算行数   java为什么空指针异常取决于条件的顺序?   Java日期在同一天或同一个月   java在使用lambda表达式时在变量中存储一些值