japronto: Screaming-fast Python 3.5+ HTTP toolkit integrated with pipelining HTTP server based on uvloop and picohttpparser.

Screaming-fast Python 3.5+ HTTP toolkit integrated with pipelining HTTP server based on uvloop and picohttpparser.

分支55Tags1
文件最后提交记录最后更新时间
9 年前
9 年前
8 年前
9 年前
6 年前
7 年前
8 年前
7 年前
9 年前
6 年前
9 年前
9 年前
9 年前
7 年前
7 年前
7 年前
9 年前
6 年前

Japronto!

IRC频道:#japronto Gitter聊天 构建状态 PyPI版本 支持的Python版本

当前项目没有新开发活动,但也没有被废弃,欢迎提交拉取请求和新的维护者加入。

如果你是Python初学者,不喜手动处理底层细节,或者不具备C语言的基础知识,这个项目可能不适合你。

Japronto(源自葡萄牙语“já pronto”,意为“已完成”)是一个__超高速__、可扩展、基于Python 3.5及更高版本的__异步HTTP工具包__,集成了使用了uvlooppicohttpparser的__流水线HTTP服务器__。它旨在吸引性能爱好者、喜欢底层编程的人以及早期采用者。

更多信息可参考在Medium上的发布文章《每秒百万次请求:仅用Python》

性能表现

以下图表展示了使用Japronto你能达到的性能级别:

每秒请求次数

用户@heppu指出,如果Go的标准库HTTP服务器代码编写的更为精细,其性能可以比图中展示的高出12%。此外,Go的fasthttp服务器在这个特定基准测试中只比Japronto慢18%,这非常棒!详情请见Pull Request #12Pull Request #14

这些“Hello World”应用的测试结果是在AWS c4.2xlarge实例上获得的。为了公平起见,所有参赛者(包括Go)都运行着单个工作进程。服务器的压力测试使用了wrk,配置为1个线程,100个连接,每个连接24个并发(管道化)请求,总计并行2400个请求。

基准测试的源代码可以在benchmarks目录下找到。

该服务器通过手工优化的C语言编写,力求充分利用现代CPU的优势。它依赖于picohttpparser来解析头信息和分块编码,而uvloop提供了异步I/O功能。同时,它试图通过尽可能地合并写操作来减少系统调用。

预览版说明

这是一个早期预览版,实现质量为alpha级,API可能会在不同版本间发生变化,并需要更多测试。目前不宜用于任何重要应用,尤其不适合生产环境。不过,我们鼓励您试用并反馈意见。如果您正在寻找下一个项目的框架,推荐考虑Sanic

目前的工作重点是CPython,但我已将PyPy纳入视线,但在今年晚些时候PyPy达到3.5兼容性,并清除大部分已知的JIT回归问题之前,我不会深入研究。

Hello World示例

一个简单的Japronto Web应用程序看起来像这样:

from japronto import Application


def hello(request):
    return request.Response(text='Hello world!')


app = Application()
app.router.add_route('/', hello)
app.run(debug=True)

教程

  1. 入门
  2. 异步处理器
  3. 路由
  4. 请求对象
  5. 响应对象
  6. 异常处理
  7. 扩展请求对象

特性

  • 支持HTTP 1.x,包含分块上传
  • 完全支持HTTP流水线技术
  • 带配置选项的长连接管理器
  • 支持同步和异步视图处理
  • 基于forking的主-多工作进程模型
  • 代码更改自动重载
  • 简化的路由机制

许可协议

本软件遵循MIT许可证分发。这是一种非常宽松的许可证,允许你在任何商业和非商业项目中使用此软件。完整的许可证文本包含在LICENSE.txt文件中。

本软件的源分布中包含了同样以MIT许可证发布的picohttpparser副本。

项目介绍

尖叫级速度的Python 3.5+ HTTP工具包,与基于uvloop和picohttpparser的管道化HTTP服务器集成。【此简介由AI生成】

定制我的领域
3288.54 K566访问 GitHub