zoukankan      html  css  js  c++  java
  • 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类的监听器的时候,就应该先接触与数据库的依赖,再关闭数据库链接

    讨论群:249728408
  • 相关阅读:
    利用 PhpStorm、Idea 等 IDE 如何 运行/调试 Go 程序 ?
    [Go] 函数/方法 的 变参
    PHP 如何显示大数字,防止显示为 科学计数法 形式
    PHP协程 详解
    [Go] 路径、目录名、包名、文件名
    [Go] 复合类型(数组、切片、字典、结构体)变量的 初始化 及 注意事项
    Firefox 及其 插件“个性化设置”备份
    Go
    [Go] template 常用方法详解 及 注意事项
    Go
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/15115283.html
Copyright © 2011-2022 走看看