轻松编写高效的网络守护程序(http、ssh…)。

api_hour的Python项目详细描述


API小时

API Hour是一个轻量级的后台程序框架,它允许您编写功能强大的应用程序。

它的创建是为了满足对简单、健壮和超高速服务器端环境的需要,以便轻松地构建非常高效的守护进程。

默认情况下,api小时启动工具包(cookiecutter)为您创建一个http守护进程来开发web服务。

通过API小时,您可以将任何异步服务器库快速转换为多处理后台程序,准备好投入生产。

https://raw.githubusercontent.com/eyepea/api-hour/master/docs/api-hour_small.png

厨房桌子上的快速脏http基准

https://raw.githubusercontent.com/eyepea/api-hour/master/propagation/en/stats.png

规模:在30秒内同时连接400个连接的查询数。

在API Hour和Gunicorn之间的Dell Precision M6800上进行的基准测试,共有16名工人。

有关详细信息,请阅读基准中的信息。

这些表演的魔力在哪里?

架构比工具更重要。

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

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

此外,我们还尝试尽可能减少代码和异步套接字之间的层。

对于每一层,我们在性能和简单性方面都使用最好的:

  1. 异步 :一个简单的异步框架,直接集成到python 3.4+
  2. aiohttp.web :异步+web框架的http协议实现
  3. ujson :最快的json序列化

如何启动api小时项目?

您可以按照我们的一个教程进行学习。

要求

  • 巨蟒3.5+

安装

遵循官方文档./p>

许可证

API小时 在Apache2许可下提供。

架构

API小时是代码和Gunicorn之间的粘合剂,可以在多个进程中启动代码。

原点

api小时是aiorest的一个分支,现在只基于gunicorn进行多处理。

谢谢

感谢Gunicorn、Airest、AioHttp和Asyncio社区,他们在API小时内完成了999999%的工作。

特别感谢Airest的创造者Andrew Svetlov。

API小时目标

  1. 快速 :API小时自下而上设计为非常快速,能够处理巨大的负载。它使用Python3及其新的强大的异步包。
  2. 可伸缩性 :API Hour具有弹性,并且易于伸缩。
  3. < DL>
    轻量级
    >OL>
  4. 小代码库 :减少意味着更快:处理请求的代码库尽可能小。除了这个基本的脚印,您当然可以激活、预加载和初始化更多的插件或包,但这是您的选择。
  5. 灵活的设置 :有些人在使用许多依赖项方面没有问题,而另一些人则希望没有依赖项(python除外)。有些人可以在性能上稍微放松一点,以便于(和速度)编码,而另一些人不会为现成的功能牺牲一毫秒。这些选项由您选择,因此没有强制的额外层、插件或中间件。
  • 简单 :API小时意味着非常容易掌握:没有陡峭的学习曲线,没有堆积如山的文档可供阅读:下载我们的交钥匙"Hello World"应用程序,并立即从那里开始编写您自己的应用程序。
  • 友好的和友好的包 :我们尝试让您使用外部包,而无需重新编写、调整它们、"包装"它们或将它们嵌入到框架中。另一方面,api小时的"插件"被编写得尽可能多,可以作为框架外的独立包使用,以造福更多人。
  • 异步…或不异步:如果您不需要构建异步代码的额外复杂性,则不必(您仍将享受巨大的性能)。你可以用传统的同步方式处理你的请求。另一方面,如果您的项目执行的IO或处理可以从并行化任务中获益,那么异步的全部能力。IO,未来,协作和任务就在你的指尖上。所有提供的插件(特别是数据库插件)都已异步就绪。
  • 欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java如何在wicket中创建元素<a>   java如何将字节/整数转换为十六进制以雕刻文件   javajavafx:为什么不管我传递给'textArea'的是什么类型的'changeListener'都无法编译。getKeyPressedProperty()。addListener`   java自定义Listview性能不佳,Listview项名称从数据库转换   单元测试java。lang.AssertionError:响应内容   java如何使用highchart缩放条形图?   RouterFunction中的java Why谓词字段。DefaultRouterFunction<T extends ServerResponse>类获取DefaultErrorWebExceptionHandler?   java我可以用Map<String,Integer>覆盖Map<Integer,Integer>吗?   java Log4j文件已创建但为空   java无法解析JavaCV中的导入   Sun PKCS11实现的java 64位替代方案   java Hibernate与JDO makeTransient的等价物是什么   java从嵌套的switch语句退出到外部switch语句   java Android保留一个位图作为更改色调、对比度、饱和度等的源   java Mule ESB 3.5创建ws-client时出错   java数组循环将自身乘以1024   java数据库自动更新失败   java递归ConcurrentHashMap。ComputeFabSent()调用永远不会终止。Bug还是“功能”?   java是否为调用方方法中正在处理的异常执行hibernate回滚事务?