跳转到主要内容

轻松编写高效的网络守护程序(HTTP、SSH...)。

项目描述

API Hour

API-Hour是一个轻量级的守护程序框架,它可以让您轻松编写强大的应用程序。

它被创建来满足对简单、健壮且超级快速的服务器端环境的需要,以便轻松构建高效守护程序。

默认情况下,API-Hour启动套件(Cookiecutter)为您创建一个HTTP守护程序来开发Web服务。

使用API-Hour,您可以快速将任何AsyncIO服务器库转换为多进程守护程序,适用于生产。

https://raw.githubusercontent.com/Eyepea/API-Hour/master/docs/API-Hour_small.png

厨房桌上的快速且简单的HTTP基准测试

https://raw.githubusercontent.com/Eyepea/API-Hour/master/propaganda/en/stats.png

缩放:30秒内400个并发连接下的查询数量。

在Dell Precision M6800上进行基准测试,比较了API-Hour和Gunicorn,使用16个工作进程。

详情请参阅基准测试中的信息。

这些性能的奥秘在哪里?

架构比工具更重要。

我们使用异步和多进程模式,结合使用,以尽可能处理HTTP请求。

理想情况下,限制应该是你的网卡,而不是CPU或内存。

此外,我们已尽可能减少你的代码和异步套接字之间的层次。

对于每一层,我们使用性能和简单性方面的最佳方案。

  1. AsyncIO:一个简单的异步框架,直接集成在Python 3.4+中

  2. aiohttp.web:AsyncIO的HTTP协议实现+Web框架

  3. ujson:最快的JSON序列化

示例

  1. API-Hour启动套件(Cookiecutter)

  2. API-Hour对TechEmpower Web框架基准测试的实现

  3. HTTP+SSH守护进程

  4. 在厨房桌子上进行的快速基准测试

如何开始一个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的目标

  1. 快速:API-Hour从底层设计为极快,能够处理巨大的负载。它使用Python 3及其新强大的AsyncIO包。

  2. 可扩展:API-Hour构建为具有弹性,易于扩展。

  3. 轻量级:
    1. 小代码库:做更少意味着更快:处理请求的代码库尽可能保持小巧。在这个基础足迹之外,你当然可以激活、预加载和初始化更多插件或包,但这选择权在你。

    2. 灵活的设置:有些人使用很多依赖项没有问题,而有些人希望没有(除了Python)。有些人可以接受在编写代码的简便性和速度上损失一点性能,而有些人不会为现成的功能牺牲一毫秒。这些选择权在你,因此没有强制性的额外层、插件或中间件。

  4. 简单:API-Hour旨在非常容易掌握:没有陡峭的学习曲线,没有需要阅读的文档堆:下载我们的现成“Hello-world”应用程序,并立即从这里开始编写自己的应用程序。

  5. 友好的包和友好的包:我们尽量让你使用外部包,而无需重写、修改、“包装”或将其嵌入到框架中。另一方面,API-Hour的“插件”尽可能写成可以作为独立包在外部框架中使用的形式,以惠及更多人。

  6. 异步…还是不:如果您不需要构建异步代码的额外复杂性,您不必这样做(您仍然会享受到巨大的性能)。您可以仅以传统的同步方式处理您的请求。另一方面,如果您的项目需要进行可从并行化任务中受益的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)

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)

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 (16.1 kB 查看散列)

上传于 源代码

构建分发版

api_hour-0.8.2-py2.py3-none-any.whl (18.7 kB 查看哈希值)

上传于 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面