由於Sanic是異步框架,所以沒辦像flask一樣提供一個全局的Request對象,但是Sanic提供了一個自定義上下文的功能,只需要指定ctx即可

一、Sanic自帶的上下文管理器
由源碼看,當沒有指定ctx時,Sanic會默認使用 SimpleNamespace() 進行實例化


使用示例,在中間件中使用ctx記錄一些數據,這樣,此中間件之后的所有流程,都能使用此數據


二、自定義上下文
先定義一個數據結構,並在實例化Sanic的時候,指定ctx為此實例對象,然后在接口之中使用,這個時候,各接口中的ctx是同一個對象

先帶着json數據請求第一個接口,第一個接口會把數據存到自定義的上下文中

再請求第二個接口,就可以把存着的數據拿出來使用

這樣就可以將從數據庫獲取的用戶對象存儲在 ctx 中。之后的其他中間件以及請求期間的處理程序都可以對此進行訪問。
