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()
    
  • 相关阅读:
    PAT A1017 Queueing at Bank [硬核模拟]
    PAT A1105 Spiral Matrix [硬核模拟]
    PAT A1153 Decode Registration Card of PAT [排序模拟]
    PAT A1139 First Contact [图]
    jquery的animate动画
    wordpress建站过程5——footer.php
    wordpress建站过程4——index.php
    wordpress建站过程3——header.php
    HTML中加载flash方法
    轮播图的原理
  • 原文地址:https://www.cnblogs.com/chanyuli/p/12153157.html
Copyright © 2011-2022 走看看