flask的信号

  什么是信号?信号可以帮助我们消除flask核心框架或者扩展应用之间的耦合,通过某个动作发生时发出通知消息来实现这个机制.简言之,信号允许特定的发送者在某事件发生时,发送通知消息给订阅者.
  flask有一系列的信号和扩展来实现信号机制.请记住信号是发送给订阅者的,订阅者无权修改数据.你会发现某些信号的功能和内置的渲染器很类似(例如:request_started类似于before_request()).但是她们的工作机理又有所不同.before_request()按照特定的顺序来处理,并且可以在不产生响应的情况下退出.
信号的最大的益处就是你可以分片段的来订阅,这种分段的订阅机制对单元测试来说非常有用.

  订阅信号
  可以用connect()方法来订阅一个信号,第一个参数为回调函数,第二个可选参数为发送者.disconnect()方法解除订阅.

  对于所有的flask信号,sender就是发送信号的应用。当你订阅一个信号的时候,务必填充sender,除非你想接收所有应用的消息。

  下面是一个例子,这个例子可以指出单元测试中所渲染的模板,并且能给出传递到模板上的变量。

from flask import template_rendered
from contextlib import contextmanager

@contextmanager
def captured_templates(app):
    recorded = []
    def record(sender, template, context, **extra):
        recorded.append((template, context))
    template_rendered.connect(record, app)
    try:
        yield recorded
    finally:
        template_rendered.disconnect(record, app)

  如上,connect方法将record和app关联起来,record为回调函数,app作为发送者。

 

 

转载于:https://www.cnblogs.com/bracken/archive/2013/02/22/2922891.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值