信号和自定义信号
信号
信号就相当于是埋点,在执行到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()
相关推荐
liuxudong00 2020-11-19
wwzaqw 2020-11-11
lihaoxiang 2020-11-05
CrossingX 2020-11-04
xuegangic 2020-10-17
86417413 2020-11-25
83206733 2020-11-19
86276537 2020-11-19
83266337 2020-11-19
86256434 2020-11-17
zhouboxiao 2020-11-16
rise 2020-11-22
sssdssxss 2020-11-20
windle 2020-11-10
孙雪峰 2020-10-30
85477104 2020-11-17
xfcyhades 2020-11-20
cheidou 2020-11-19