十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
# pip install blinker
from blinker import signal
s = signal('信号量')
def each(num):
print("each {}".format(num))
def full_singal(num):
print("full_time {}".format(num))
s.connect(each)
s.connect(full_singal, sender = 2)
for num in range(1, 4):
s.send(num)
each 1
each 2
round 2
each 3
# 或者简写成:
from blinker import signal
s = signal("test start")
@s.connect
def each(round)
print("each {}".format(round))
Flask中内置信号:
flask.template_rendered:模板渲染成功的时候发送,这个信号与模板实例template上下文的字典一起调用。
flask.request_started:建立请求上下文后,在请求处理开始前发送,订阅者可以用request之类的标准代理访问请求。
flask.request_finished:在响应发送给客户端之前发送,可以传递reponse。
flask.got_request_exception:在请求处理中抛出异常时发送,异常本身会通过execption传递到订阅函数。
flask.request_tearing_down:在请求销毁时发送,它总是被调用,即使发生异常。
flask.appcontext_tearing_down:在应用上下文销毁时发送,它总是被调用,即使发生异常。