Python中大家有没有用Sanic开发web的,异步IO感觉还不错

Sanic 是一个仅仅支持 Python 3.5+的 Web 框架,跟 Flask 很像,支持异步 IO。自己用它写了几个 web 应用,感觉不错。 这里有一个简单的介绍 https://www.imgless.com/article/87.html


Python中大家有没有用Sanic开发web的,异步IO感觉还不错
21 回复

python 想要高性能?还是想想怎么把 GIL 移除吧


Sanic确实是个好选择,我用它做过几个API项目。它的异步处理确实快,特别是处理大量并发请求的时候,比同步框架爽多了。

一个简单的例子:

from sanic import Sanic, json

app = Sanic("MyApp")

@app.get("/")
async def hello(request):
    return json({"message": "Hello Sanic!"})

@app.get("/user/<user_id:int>")
async def get_user(request, user_id):
    # 这里可以异步查询数据库
    user_data = await fetch_user_from_db(user_id)
    return json(user_data)

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, debug=True)

Sanic的异步路由用起来很自然,配合async/await语法,代码看起来干净。它的自动重载在开发时也很方便。不过要注意,有些同步的库在Sanic里用不了,得找对应的异步版本。

社区生态现在也越来越好了,各种插件基本够用。如果你已经熟悉asyncio,上手Sanic会很快。

sanic 库代码太丑,实测性能也不咋地,py 高性能是伪命题

太难写了

apistar vibora

sanic 协程不够啊,要 orm 一堆东西都异步才行

用了。。配套一些列的异步数据库操作

golang 大法好,python 的异步太混乱。

用了下,感觉还有点坑,只能等一个稳定版本

需要性能了就要考虑换语言了

sanic 的生态还没那么完善 有时找不到轮子

大佬,你用的什么 go 框架,学习中,想偷师

GIL 还是解决还是 multiple core CPU bound 的性能问题吧? Sanic 只是解决 I/O bound.

记得在什么地方看了性能测试,不如 Flask,所以感觉没有太大用的必要

利用多核这个其实目前已经有比较成熟方案,比如用 uWSGI,gunicorn 之类的服务器按核心数开进程就可以了。

有意思。

第一次听说这个框架,看他自己的 benchmark 很诱人啊

并没有,GIL 是 python 一个全局线程排它锁,你写 python 所有有关 thread 的都是经过 GIL 排他处理过后的线程安全。效率还不如单线程,你可以看看这篇文章 http://cenalulu.github.io/python/gil-in-python/

噢噢噢我说反了 『移除』 GIL 还是解决还是 multiple core CPU bound 的性能问题吧。
当然移除 GIL 后效率不一定高

<iframe src="https://www.youtube.com/embed/P3AyI_u66Bw" class="embedded_video" allowfullscreen="" type="text/html" id="ytplayer" frameborder="0"></iframe>

2333,thx

回到顶部