Flask框架中的信号基于blinker,其主要就是让开发者但是在flask请求过程当中定制一些用户行为。flask
安装:pip3 install blinkerapp
request_started = _signals.signal('request-started') # 请求到来前执行 request_finished = _signals.signal('request-finished') # 请求结束后执行 before_render_template = _signals.signal('before-render-template') # 模板渲染前执行 template_rendered = _signals.signal('template-rendered') # 模板渲染后执行 got_request_exception = _signals.signal('got-request-exception') # 请求执行出现异常时执行 request_tearing_down = _signals.signal('request-tearing-down') # 请求执行完毕后自动执行(不管成功与否) appcontext_tearing_down = _signals.signal('appcontext-tearing-down')# 请求上下文执行完毕后自动执行(不管成功与否) appcontext_pushed = _signals.signal('appcontext-pushed') # 请求上下文push时执行 appcontext_popped = _signals.signal('appcontext-popped') # 请求上下文pop时执行 message_flashed = _signals.signal('message-flashed') # 调用flask在其中添加数据时,自动触发
appcontext_pushed = _signals.signal('appcontext-pushed') request_started = _signals.signal('request-started') 若是有render: before_render_template = _signals.signal('before-render-template') template_rendered = _signals.signal('template-rendered') request_finished = _signals.signal('request-finished') 若是视图函数有异常: got_request_exception = _signals.signal('got-request-exception') request_tearing_down = _signals.signal('request-tearing-down') appcontext_tearing_down = _signals.signal('appcontext-tearing-down') appcontext_popped = _signals.signal('appcontext-popped') 若是使用信号: message_flashed = _signals.signal('message-flashed')
from flask import Flask,signals,render_template,flash app = Flask(__name__) def func1(*args,**kwargs): print('触发信号:request_started') def func2(*args,**kwargs): print('触发信号:appcontext_pushed') signals.request_started.connect(func1) signals.appcontext_pushed.connect(func2) @app.route('/login') def login(): return "LOGIN" if __name__ == '__main__': app.run()
信号与berfore_request()区别:框架
信号:实时监控数据操做(记录日志)
在请求处理原来基础上添加额外操做 (信号比befors_request先执行)
befors_requets:能够控制请求是否能够继续往下走(能够有返回值)