flask》》信号
信号使用三大步骤》》定义信号》》监控信号 信号名称.connect(函数名) 或者 信号名.connect 装饰器 函数》》发生信号# 1. 导入并创建信号fromblinkerimportsignal user_logged_insignal(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 会传递给接收器的 senderuser_logged_in.send(app,username张三)fromflaskimportFlaskfromblinkerimportNamespace appFlask(__name__)#【1】信号机制 3步走# Namespace命名空间#1.定义信号sSpaceNamespace()fire_signalsSpace.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(debugTrue)内置信号命名空间fromblinkerimportNamespace _signalsNamespace()xx_signals.signal(xxxxxxx)fromblinkerimportsignal xxsignal(xxxxxxx)fromblinkerimportsignal,Namespace# 方式1全局默认命名空间sig1signal(login)sig2signal(login)print(sig1issig2)# True —— 同一个对象# 方式2自定义命名空间nsNamespace()sig3ns.signal(login)sig4ns.signal(login)print(sig3issig4)# True —— 同一个命名空间内相同名称是同一个# 跨命名空间比较print(sig1issig3)# False —— 不同命名空间即使是相同名称也是不同对象