Sanic 还不错
简单横向比较了 Sanic、Flask、FastAPI 之后,决定以后还是优先学 Sanic 吧。
Sanic 在同类评测里名列前茅。异步架构有先天的性能优势,Flask 甚至才认识到这点,好像又显得不那么重视。最新发布的 2.x 版本里的异步支持形同鸡肋,不支持 ASGI,不支持后台任务,Websocket 也同样不能支持。
当红炸子鸡 FastAPI 性能同样表现优异,写代码还送文档,着实吸睛,但是那 600 多个 issue 令我“望而生畏”。
模版支持对我反倒是减分项。我是前后端分离的忠实信徒,Sanic 这种一刀切的做法正和我胃口,有事抛 request 过来,合理的性能损耗完全是可以接受的。
Sanic 不只是开发框架,同时提供了产品级的 ASGI 服务器,对新人比较友好,部署上也能省点事,这是 FastAPI 也没能做到的一点。
一些细节上的做法 Sanic 也同样很合我意。比如 request 对象必须做为 view 函数第一个参数进行显式传递。相比 Flask Thread Local 的实现方案,这个额外的参数更像是设计合理的必然结果,因为借此你可以直观地获知 request 对象的生命周期。强制要求 view 返回 HTTPResponse 对象也同具此意。
这几天翻阅了不少 Python Web 框架的文档,最直观感受就是太卷了。如果分别用这些框架实现同样一个功能,查重率应该不会低于 80% 吧?