自定义信号

如果你想在自己的代码中创建和发送信号 (例如,如果你正在编写扩展名),请创建一个新的 Signal 实例,并在通知订阅者时调用 send 。使用 Namespace创建信号。

from flask import current_app
from flask.signals import Namespace

namespace = Namespace()
message_sent = namespace.signal('mail_sent')

def message_response(recipient, body):
    ...
    message_sent.send(
        current_app._get_current_object(),
        recipient=recipient,
        body=body
    )

@message_sent.connect
def log_message(app, recipient, body):
    ...

更喜欢使用 Flask 的信号支持而不是直接使用 Blinker。如果使用你的扩展程序的开发人员没有选择安装 Blinker,它会封装库以使信号保持可选。