V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
prasanta
V2EX  ›  Python

XWeb - 高性能异步 Web 框架。

  •  
  •   prasanta · 2018-09-29 17:13:15 +08:00 · 2183 次点击
    这是一个创建于 2272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    XWeb - 高性能异步 Web 框架。

    XWeb

    • 框架使用了高性能的 uvloop+httptools.
    • 框架全部采用 python3.6 后的异步 async await 语法.
    • 框架架构参考了 koa.js.

    优势

    • 高性能
    • 插件式
    • 全异步

    Hello World

    from xweb import App
    
    app = App()
    
    @app.use
    async def response(ctx):
        ctx.res.body = "Hello World"
    
    
    if __name__ == '__main__':
        app.listen(8000)
    

    koa.js 官方例子 xweb 版

    import time
    
    from xweb import App
    
    app = App()
    
    
    @app.use
    async def logger(ctx, fn):
        await fn()
        rt = ctx['X-Response-Time']
        print(rt)
    
    
    @app.use
    async def response_time(ctx, fn):
        start = time.time()
        await fn()
        usage = (time.time() - start) * 1000_000
        ctx['X-Response-Time'] = f'{usage:.0f}µs'
    
    
    @app.use
    async def response(ctx):
        ctx.res.body = "Hello World"
    
    
    if __name__ == '__main__':
        app.listen(8000)
    

    性能

    • 测试代码目录,为了公平,所有服务都启 4 个进程进行对。benchmarks/
    • 环境: iMac (Retina 4K, 21.5-inch, 2017), 3 GHz Intel Core i5, 8 GB 2400 MHz DDR4
    • 压测命令: wrk http://127.0.0.1:8000/ -c 100 -t 10 -d 10 -T 10

    Requests/Sec:

    • xweb 90000
    • vibora 90000
    • meinheld + wsgi 77000
    • sanic 50000

    规划(期待有兴趣的同学一起参与进来,创造全异步,高性能的 xweb 插件)

    参考 koa.js 的插件开发 xweb 对应的插件,比如

    • Body parser
    • Data validator
    • Router
    • Auth
    • 等等

    Github 地址

    XWeb

    5 条回复    2018-10-27 15:14:55 +08:00
    KgM4gLtF0shViDH3
        1
    KgM4gLtF0shViDH3  
       2018-09-29 17:18:23 +08:00
    大佬又出现了
    hcheng
        2
    hcheng  
       2018-10-02 09:42:39 +08:00
    先前排膜拜一下大佬
    xpresslink
        3
    xpresslink  
       2018-10-03 23:48:40 +08:00
    谢谢楼主分享
    其实光这么一个祼框架速度再高也是虚的。

    计划有异步的 ORM 么?还是打算直接集成 sqlalchemy 之类的?
    模板系统是打算用现成的如 jinja2 或是 mako 之类的。
    还有 Session,cache 等
    如果没这些基础设施光快也没用啊。

    django 和 flask 之类的之所以流行主要是功能齐全,开发效率高。用 python 做 web 开发大多数都是运维项目或者管理后端之类的。要是真需速度就用 go 或 java 之类开发后端了,python 高并发下的靠谱程度还是差点儿。
    prasanta
        4
    prasanta  
    OP
       2018-10-05 22:28:23 +08:00
    @xpresslink 思想源于 koa.js. 你说的这些都会以插件的形式出现。
    xiubin
        5
    xiubin  
       2018-10-27 15:14:55 +08:00
    @prasanta #4 大佬书写的怎么样了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:19 · PVG 08:19 · LAX 16:19 · JFK 19:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.