异步版Flask:Sanic

Flask以其微框架的特点获得了相当高的关注,简单、实用、功能完备是架构师们选择Flask的原因之一。目前阻碍Flask继续发展的阻力之一就是基于WSGI的阻塞式架构。在前面一节虽然已经介绍过了基于异步的Starlette,但对于众多的Flask爱好者来说,用熟悉的Flask用法搭配异步处理将会更加舒爽。

Sanic就是这样一款能够满足Flask爱好者需要的框架,采用与Flask十分近似的语法和用法,但是采用异步设计。Sanic的理论性能与Starlette相比要更加强一些。然而在实际应用时,根据所搭配的ASGI服务和HTTP服务的不同,Web框架的整体性能也会有所变化。

Sanic需要运行在3.6版本以上的Python环境中,通过async/await关键字来实现异步。由于Sanic的使用方法与Flask十分相似,所以本节将主要针对Sanic在使用和部署中与Flask的不同来进行简单介绍。

Sanic的依赖不多,要应用在项目中只需要通过命令pip install sanic即可完成安装。如果不需要使用uvloop和ujson库,可以使用以下较为复杂的命令来安装。

SANIC_NO_UVLOOP=true SANIC_NO_UJSON=true pip install sanic

Sanic安装好以后,就可以新建一个文件来运行以下的最小应用了。