1. 程式人生 > >sanic中介軟體和監聽器

sanic中介軟體和監聽器

一:中介軟體

中介軟體是伺服器在請求之前或之後執行的功能,他們可以用來修改修改使用者定義處理函式的請求或相應。

Sanic提供兩種型別的中介軟體:請求和響應。

兩者都是使用@app.middleware裝飾器宣告,兩個裝飾器分別需要傳入一個代表其型別的引數:requestresponse

下面舉一個簡單的栗子:

from sanic.response import text
@app.route("/get_info")
async def get_info(request):
  print(request.url)
  return text("it is ok!")
@app.middleware(
"request") async def get_request_middleware(request): print("請求中介軟體") @app.middleware("response") async def get_response_middleware(request,response): print("響應中介軟體")

當我們訪問/get_info請求時,列印結果將會是這樣的:

請求中介軟體

http://localhost:5000/get_info

響應中介軟體

二:監聽器

如果需要在伺服器啟動/關閉的時候,執行一些特殊的程式碼,則可以使用以下監聽器:

before_server_start:在伺服器啟動之前執行

after_server_start:在伺服器啟動之後執行

before_server_stop:在伺服器關閉之前執行

after_server_stop:在伺服器關閉之後執行

舉個栗子:

@app.listener("before_server_start")
async def before_server_start(request,loop):
  print("before_server_start")
@app.listener("after_server_start")
async def after_server_start(request,loop):
  
print("after_server_start") @app.listener("before_server_stop") async def before_server_stop(request,loop): print("before_server_stop") @app.listener("after_server_stop") async def after_server_stop(request,loop): print("after_server_stop")