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()
    
  • 相关阅读:
    C#递规与分治策略
    SuperMap Objects Java & Applet
    如何提高显示速度
    系统测试
    ora01033:oracle initialization or shutdown in progress
    ORA12535: TNS:operation timed out。
    oralce01033
    hsql初体验
    创建Oracle数据源失败
    转载地图优化
  • 原文地址:https://www.cnblogs.com/chanyuli/p/12153157.html
Copyright © 2011-2022 走看看