Python中如何使用XWeb高性能异步Web框架?
XWeb - 高性能异步 Web 框架。
- 框架使用了高性能的 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 地址
Python中如何使用XWeb高性能异步Web框架?
大佬又出现了
XWeb是一个基于asyncio的高性能异步Web框架,使用起来挺直接的。先安装:pip install xweb,然后写个简单的应用:
from xweb import App, Response, Request
app = App()
@app.route('/')
async def hello(request: Request):
return Response(text='Hello XWeb!')
@app.route('/user/{name}')
async def user_info(request: Request, name: str):
return Response(text=f'Hello {name}!')
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000)
跑起来后访问 http://127.0.0.1:8000/ 就能看到结果。路由支持路径参数,像上面的 {name} 会自动解析。请求处理函数必须是 async def,参数里可以拿到 Request 对象。
XWeb默认用uvicorn跑,性能不错。如果想调参数,比如用其他ASGI服务器或者改worker数,可以在 app.run() 里传 server='hypercorn' 或者 workers=4 这样的参数。
总结:装包、写路由、跑应用,就这么简单。
先前排膜拜一下大佬
谢谢楼主分享
其实光这么一个祼框架速度再高也是虚的。
计划有异步的 ORM 么?还是打算直接集成 sqlalchemy 之类的?
模板系统是打算用现成的如 jinja2 或是 mako 之类的。
还有 Session,cache 等
如果没这些基础设施光快也没用啊。
django 和 flask 之类的之所以流行主要是功能齐全,开发效率高。用 python 做 web 开发大多数都是运维项目或者管理后端之类的。要是真需速度就用 go 或 java 之类开发后端了,python 高并发下的靠谱程度还是差点儿。
思想源于 koa.js. 你说的这些都会以插件的形式出现。
#4 大佬书写的怎么样了

