作家
登录

用Python实现每秒处理120万次HTTP请求

作者: 来源: 2017-04-24 17:02:01 阅读 我要评论

用Python实现每秒处理120万次HTTP请求
Picohttpparser 依附 SSE4.2 和 CMPESTRI x86_64 的特点做解析


HTTP 流水线(图片来自 Wikipedia)

Python 是有垃收受接收集功能的说话,为避免不须要的增长垃收受接收集器的压力,在设计高机能体系时必定要多加留意。Japronto 的内部被设计的测验测验避免轮回引用和尽可能少的分派、释放内存,它会预先申请一块区域来存放对象各类,同时测验测验在后续请求中重用那些没有被持续引用的 Python 的对象,而不是将那些对象直接扔掉落。

这些预先申请的内存的大年夜小被固定为 4KB 的倍数。内部构造会异常当心和频繁的应用这些持续的内存区域,以削减缓存掉效的可能性。

Japronto 会尽可能避免不须要的缓存间复制,只在精确的地位履行操作。比如,在处理路由时,先做 URL 解码再进行路由匹配。

开源供献者们,我须要你们的赞助

我已经持续赓续的开辟 Japronto 跨越三个月,不但在每一个工作日,周末也无休。除了天天的工作外,我把所有时光精力都投入到这个项目上了。

我想是时刻和社区分享我的劳动不雅实了。

Japronto 已经靠得住的实现了下面这些功能:

  • 实现 HTTP 1.x 并且支撑分片上传
  • 完全支撑 HTTP 流水线
  • 可设备是否让链接 Keep-alive
  • 支撑同步和异步视图
  • Master-multiworker 多义务处理
  • 代码热加载
  • 简单易用的路由规矩

下一次,我精深刻研究关于 Websockets 和 HTTP 异步应答数据流。

写文档和做测试还有很多工作要做,如不雅你有兴趣参加我,请在 Twitter 上直接接洽我. 这里是 Japronto 的 GitHub 项目仓库.

体系调用,以及在内核空间到用户空间之间移动数据,比拟起在过程内部移动数据,成本要高的多。这就是为什么不到万不得已,要尽可能少做体系调用的次数。

同时,如不雅你的公司正在寻找熟悉机能优化和 DevOps 的 Python 工程师,我很愿意为你效劳,在全球任何处所都可以。

停止语

膳绫擎提到的所有技巧不只实用于 Python,也同样可以被应用到其它说话,如 Ruby、JavaScript,甚至 PHP 等。我异常感兴趣去付诸实践,然则,除非有人能在这事上投入资金支撑,生怕我没有足够的精力去完成。

在此我要感激 Python 社区为优化机能所付出的持续投入。尤其是 Victor Stinner @VictorStinner、INADA Naoki @methane 和 Yury Selivanov @1st1 以及全部 PyPy 团队。

献给我挚爱的 Python。

【编辑推荐】

  1. Python开辟者2017应当存眷的七个类库
  2. Python一行代码完成并行义务
  3. Python对Ruby:谁在Web开辟范畴更胜一筹?
  4. Python说话在将来的成长前景
  5. 经由过程 Node.js, Express.js 实现 HTTP/2 Server Push
【义务编辑:51CTO_OS TEL:(010)68476606】

  推荐阅读

  如何提升Wi-Fi速度 学会更改无线信道

平常在家上彀时,时常感到卡顿,网速迟缓,看个视频老是在缓冲,无线旌旗灯号强度忽高忽低……,如不雅您碰着了以上情况,很可能是应用无线信道过于拥堵,导致无线收集大年夜>>>详细阅读


本文标题:用Python实现每秒处理120万次HTTP请求

地址:http://www.17bianji.com/lsqh/34930.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)