flask信号
flask-信号
Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为。
|
1
|
pip3 install blinker |
1. 内置信号
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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在其中添加数据时,自动触发 |
源码示例
request_started
request_finished
before_render_template
template_rendered
got_request_exception
request_tearing_down
appcontext_tearing_down
appcontext_tearing_down
appcontext_pushed
appcontext_popped
message_flashed2. 自定义信号
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#!/usr/bin/env python# -*- coding:utf-8 -*-from flaskimport Flask, current_app, flash, render_templatefrom flask.signalsimport _signalsapp= Flask(import_name=__name__)# 自定义信号xxxxx= _signals.signal('xxxxx')def func(sender,*args,**kwargs): print(sender)# 自定义信号中注册函数xxxxx.connect(func)@app.route("/x")def index(): # 触发信号 xxxxx.send('123123', k1='v1') return 'Index'if __name__== '__main__': app.run() |
浙公网安备 33010602011771号