flask》》信号
信号使用三大步骤
》》定义信号
》》监控信号 信号名称.connect(函数名) 或者 @信号名.connect 装饰器 函数
》》发生信号
# 1. 导入并创建信号fromblinkerimportsignal user_logged_in=signal('user-logged-in')# 创建一个名为'user-logged-in'的命名信号# 2. 定义接收器(接收函数)并连接到信号defon_login(sender,username):# 'sender' 是信号的发送者print(f"用户{username}登录了,信号来自:{sender}")user_logged_in.connect(on_login)# 将接收器连接到信号# 3. 在合适的时机发送信号if__name__=="__main__":# 发送信号,第一个参数 'app' 会传递给接收器的 'sender'user_logged_in.send('app',username='张三')fromflaskimportFlaskfromblinkerimportNamespace app=Flask(__name__)#【1】信号机制 3步走# Namespace:命名空间#1.定义信号sSpace=Namespace()fire_signal=sSpace.signal('发送信号火箭')#2.监听信号deffire_play(sender,uname):print(sender)print(uname)print("start play")fire_signal.connect(fire_play)# 或者@fire_signal.connectdeffire_play(sender,uname):print(sender)print(uname)print("start play")#3.发送一个信号fire_signal.send(uname=‘xxx’)if__name__=='__main__':app.run(debug=True)内置信号
命名空间
fromblinkerimportNamespace _signals=Namespace()xx=_signals.signal('xxxxxxx')==================================fromblinkerimportsignal xx=signal('xxxxxxx')fromblinkerimportsignal,Namespace# 方式1:全局默认命名空间sig1=signal('login')sig2=signal('login')print(sig1issig2)# True —— 同一个对象# 方式2:自定义命名空间ns=Namespace()sig3=ns.signal('login')sig4=ns.signal('login')print(sig3issig4)# True —— 同一个命名空间内相同名称是同一个# 跨命名空间比较print(sig1issig3)# False —— 不同命名空间,即使是相同名称也是不同对象