轻松编写高效的网络守护程序(HTTP、SSH...)。
项目描述
API Hour
API-Hour是一个轻量级的守护程序框架,它可以让您轻松编写强大的应用程序。
它被创建来满足对简单、健壮且超级快速的服务器端环境的需要,以便轻松构建高效守护程序。
默认情况下,API-Hour启动套件(Cookiecutter)为您创建一个HTTP守护程序来开发Web服务。
使用API-Hour,您可以快速将任何AsyncIO服务器库转换为多进程守护程序,适用于生产。
厨房桌上的快速且简单的HTTP基准测试
缩放:30秒内400个并发连接下的查询数量。
在Dell Precision M6800上进行基准测试,比较了API-Hour和Gunicorn,使用16个工作进程。
详情请参阅基准测试中的信息。
这些性能的奥秘在哪里?
架构比工具更重要。
我们使用异步和多进程模式,结合使用,以尽可能处理HTTP请求。
理想情况下,限制应该是你的网卡,而不是CPU或内存。
此外,我们已尽可能减少你的代码和异步套接字之间的层次。
对于每一层,我们使用性能和简单性方面的最佳方案。
AsyncIO:一个简单的异步框架,直接集成在Python 3.4+中
aiohttp.web:AsyncIO的HTTP协议实现+Web框架
ujson:最快的JSON序列化
示例
如何开始一个API-Hour项目?
你可以遵循我们的教程之一
支持
要求
Python 3.5+
安装
遵循官方文档。
许可协议
API-Hour遵循Apache 2许可证。
架构
API-Hour是连接你的代码和Gunicorn的粘合剂,以便在多个进程中启动你的代码。
起源
API-Hour是aiorest的分支,现在仅基于Gunicorn进行多进程。
感谢
感谢Gunicorn、aiorest、aiohttp和AsyncIO社区,他们为API-Hour完成了99,9999%的工作。
特别感谢Andrew Svetlov,aiorest的创造者。
API-Hour的目标
快速:API-Hour从底层设计为极快,能够处理巨大的负载。它使用Python 3及其新强大的AsyncIO包。
可扩展:API-Hour构建为具有弹性,易于扩展。
- 轻量级:
小代码库:做更少意味着更快:处理请求的代码库尽可能保持小巧。在这个基础足迹之外,你当然可以激活、预加载和初始化更多插件或包,但这选择权在你。
灵活的设置:有些人使用很多依赖项没有问题,而有些人希望没有(除了Python)。有些人可以接受在编写代码的简便性和速度上损失一点性能,而有些人不会为现成的功能牺牲一毫秒。这些选择权在你,因此没有强制性的额外层、插件或中间件。
简单:API-Hour旨在非常容易掌握:没有陡峭的学习曲线,没有需要阅读的文档堆:下载我们的现成“Hello-world”应用程序,并立即从这里开始编写自己的应用程序。
友好的包和友好的包:我们尽量让你使用外部包,而无需重写、修改、“包装”或将其嵌入到框架中。另一方面,API-Hour的“插件”尽可能写成可以作为独立包在外部框架中使用的形式,以惠及更多人。
异步…还是不:如果您不需要构建异步代码的额外复杂性,您不必这样做(您仍然会享受到巨大的性能)。您可以仅以传统的同步方式处理您的请求。另一方面,如果您的项目需要进行可从并行化任务中受益的IO或处理,Async IO、futures、coroutines和tasks的全部功能都掌握在您的手中。所有提供的插件(特别是数据库插件)都支持异步。
更改
0.8.2 (2017-11-10)
添加 pre_start 协程
修复 setup.py 以正确检查最小 Python 版本。感谢 @romuald
0.8.1 (2016-07-08)
停止支持 Python 3.3 和 3.4
0.7.1 (2016-07-08)
合并来自 https://github.com/KeepSafe/aiohttp/pull/879 的错误修复
0.7.0 (2015-05-04)
添加 HTML 序列化插件
添加 AsyncIO 高级流服务器支持(由 Panoramisk 的 FastAGI 实现)
现在,您可以使用 make_handler 方法直接将您的处理程序与套接字连接,以获得更多灵活性
0.6.2 (2015-02-24)
您可以使用 Container 的 make_event_loop() 类方法自定义使用的事件循环
0.6.1 (2015-02-10)
发布新版本,因为 PyPI 出现了问题:0.6.0 在 PyPI 上损坏
0.6.0 (2015-01-13)
API-Hour 配置文件现在是可选的,使用 -ac 自动配置您的应用程序
添加 Python 3.3 兼容性,以便轻松从发行版软件包中直接使用 Python 3
添加 Debian/Ubuntu 软件包
ujson 对于 aiohttp.web 现在是可选的
更多文档和教程:一体化和入门套件
如果 api_hour CLI 没有日志文件,默认在控制台启用日志记录
0.5.0 (2015-01-07)
项目重启
更改 API-Hour 的主要目标:API-Hour 现在可以多进程所有 AsyncIO 库服务器,而不仅仅是 HTTP
API-Hour 现在基于 Gunicorn
删除 aiorest 分支,建议在 cookiecutter 中使用 aiohttp.web 作为 HTTP 守护进程
0.3.3 (2014-12-19)
静态文件可以自动提供
body 和 json_body 以及 transport 可在 Request 中访问
loop 可在 Application 中访问
Asset Serializer 接受编码
cookiecutter 可在 https://github.com/Eyepea/cookiecutter-API-Hour 获取
ujson 的使用
错误修复
0.3.2 (2014-10-31)
重构和清理
发布 API-Hour 的基准服务器
关于 API-Hour 的 PyCON-FR 展示的英文版本
修复 response.write_eof() 以遵循 aiohttp 的更改(感谢 aiorest 的补丁)
0.3.1 (2014-10-28)
将 multi_process 重命名为 arbiter
改进 Python 打包
0.3.0 (2014-10-26)
API-Hour 的第一个版本,aiorest 的性能导向版本
cookiecutter 模板
序列化支持
用 ujson 替换 json
基本多进程
0.2.4 (2014-09-12)
将 loop 设置为 create_session_factory() 函数中的关键字参数
0.2.3 (2014-08-28)
Redis 会话从 asyncio_redis 切换到 aioredis
0.2.2 (2014-08-15)
在请求中添加类似 Pyramid 的 matchdict(请参阅 https://github.com/aio-libs/aiorest/pull/18)
对于 POST/PUT 方法中的不正确的 JSON body 返回“400 Bad Request”
README 已修复
自定义响应状态代码(请参阅 https://github.com/aio-libs/aiorest/pull/23)
0.1.1 (2014-07-09)
切换到 aiohttp v0.9.0
0.1.0 (2014-07-07)
基本 REST API
项目详情
下载文件
下载适合您的平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码发行版
构建分发版
api_hour-0.8.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 78d4cdbe1e5f9b3052e54684750b95ba98abe61744528d4232b90fc5ae0a5e6f |
|
MD5 | dc090290b647402f4f85ba07d0817732 |
|
BLAKE2b-256 | b6cfedf9320017663a43f618d27ee040e8728f351c3c4a03b9303ecd3f9475de |
api_hour-0.8.2-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 848b808f6a91a99f5d5c9420c1cc36a7db579e433ffa7f3fa6361e751c23e897 |
|
MD5 | 1a28f83aeb51752c19e919ecc7800205 |
|
BLAKE2b-256 | d17de24af61dedefe67b71631d89b9d0c068aec2d54585026ab1fed58bbb6bfb |