Sanic十四:Sanic上下文ctx

 

由于Sanic是异步框架,所以没办像flask一样提供一个全局的Request对象,但是Sanic提供了一个自定义上下文的功能,只需要指定ctx即可

 

一、Sanic自带的上下文管理器

由源码看,当没有指定ctx时,Sanic会默认使用 SimpleNamespace() 进行实例化

 

使用示例,在中间件中使用ctx记录一些数据,这样,此中间件之后的所有流程,都能使用此数据

 

二、自定义上下文

先定义一个数据结构,并在实例化Sanic的时候,指定ctx为此实例对象,然后在接口之中使用,这个时候,各接口中的ctx是同一个对象

先带着json数据请求第一个接口,第一个接口会把数据存到自定义的上下文中

再请求第二个接口,就可以把存着的数据拿出来使用

 

这样就可以将从数据库获取的用户对象存储在 ctx 中。之后的其他中间件以及请求期间的处理程序都可以对此进行访问。

 

posted @ 2021-08-09 22:12  向前走。  阅读(1325)  评论(0编辑  收藏  举报