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()
    
  • 相关阅读:
    Linux程序分析工具介绍—ldd,nm
    Makefile学习(三)[第二版]
    Linux下的tree命令 --Linux下目录树查看
    Makefile学习(二)[第二版]
    Makefile学习(一)[第二版]
    Linux下top命令详解
    Shell编程入门(第二版)(下)
    mysql用命令行导入sql文件
    javascript的onbeforeunload函数在IOS上运行
    mysql如何利用Navicat 导出和导入数据库
  • 原文地址:https://www.cnblogs.com/chanyuli/p/12153157.html
Copyright © 2011-2022 走看看