zoukankan      html  css  js  c++  java
  • 信号和自定义信号

    信号

    信号就相当于是埋点,在执行到send这个方法的时候,就会执行信号中注册的函数。

    一共有两个原生的信号:request_started 和 request_finished。

    信号和请求扩展的区别再去,请求扩展是在响应函数前执行的函数,信号是在请求扩展之前执行的函数。从源码中可以看出来。

    from flask import Flask,signals
    
    app = Flask(__name__)
    
    # 往信号中注册函数
    def func(*args,**kwargs):
        print('触发型号',args,kwargs)
    
    signals.request_started.connect(func)
    
    # 触发信号: signals.request_started.send()
    @app.before_first_request
    def before_first1(*args,**kwargs):
        pass
    @app.before_first_request
    def before_first2(*args,**kwargs):
        pass
    
    @app.before_request
    def before_first3(*args,**kwargs):
        pass
    
    @app.route('/',methods=['GET',"POST"])
    def index():
        print('视图')
        return "ok"
    
    
    if __name__ == '__main__':
        app.__call__()
        app.run()
    

    自定义信号

    from flask import Flask,signals
    from flask.signals import _signals
    
    app = Flask(import_name=__name__)
    
    # 自定义信号
    xxxxx = _signals.signal('xxxxx')
    
    
    def func1(*args,**kwargs):
        # print(sb,k)
        print("我是信号")
    def func(*args,**kwargs):
        print('触发型号',args,kwargs)
    
    # 自定义信号中注册函数
    xxxxx.connect(func)
    # 往信号中注册函数
    
    
    signals.request_started.connect(func)
    
    
    @app.route("/x")
    def index():
        # 触发信号
        _signals.signal("request-started").send(app)
        xxxxx.send("sb",k=123)
        return 'Index'
    
    
    
    
    if __name__ == '__main__':
        app.run()
    
  • 相关阅读:
    路径
    JSTL-3
    JSTL-2
    JSTL-1
    EL和JSTL的关系
    Mybatis控制台打印SQL语句的两种方式
    centOS7安装JDK
    centOS7下安装GUI图形界面
    centOS7配置IP地址
    Office2016专业增强版永久激活
  • 原文地址:https://www.cnblogs.com/chanyuli/p/12153157.html
Copyright © 2011-2022 走看看