sanic中间件
Sanic十三:Sanic中间件和监听器
一:中间件
中间件是在请求服务器之前或之后执行的功能。它们可以用来在请求到视图函数之前修改请求参数,视图函数响应之后处理响应数据,中间件中只能做数据处理,若中间件修饰的函数中有返回操作,则会直接中断返回给用户
中间件有两种类型:请求和响应。两者都使用 @app.middleware来修饰,参数只支持字符串: 'request' 或 'response'
1、request,request修饰的函数,只需要接收request参数即可,当有多个request中间件时,按 先加载 -> 后加载 顺序执行
当request修饰的函数,有做返回操作时,将不会执行视图函数,直接走响应流程
2、response,response修饰的函数,需同时接收request和response,当有多个response中间件时,按 先加载 -> 先加载 顺序执行
当response修饰的函数,有做返回操作时,将不会继续往下执行,会中断流程,不会返回此步骤设置的返回值返回此步骤return代码之前产生的数据
二、监听器
1、监听器的类型:
服务启动之前:before_server_start
服务启动之后:after_server_start
服务停止之前:before_server_stop
服务停止之后:after_server_stop
2、使用监听器有两种方式
方式一:@app.listener(事件名)修饰对应的处理函数,此时函数需接受两个参数,一个是app,一个是loop
当同一个事件被定义多次时,按加载顺序执行
方式二:Sanic.register_listener(处理函数, 事件名),此时事件函数仍然需接受两个参数,一个是app,一个是loop
同样,当同一个事件被定义多次时,按加载顺序执行
须注意的是,使用start类的监听器执行的任务肯定是下一步依赖于上一步的,比如第一个监听器是链接数据库,第二个监听器是对数据库相关的某些操作,而使用stop类的监听器的时候,就应该先接触与数据库的依赖,再关闭数据库链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南