flask》》信号

信号使用三大步骤

》》定义信号

》》监控信号 信号名称.connect(函数名) 或者 @信号名.connect 装饰器 函数

》》发生信号

python 复制代码
# 1. 导入并创建信号
from blinker import signal
user_logged_in = signal('user-logged-in')      # 创建一个名为'user-logged-in'的命名信号

# 2. 定义接收器(接收函数)并连接到信号
def on_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='张三')
python 复制代码
from flask import Flask
from blinker import Namespace
app = Flask(__name__)
 
 
#【1】信号机制  3步走
# Namespace:命名空间
#1.定义信号
sSpace = Namespace()
fire_signal = sSpace.signal('发送信号火箭')
 
 
#2.监听信号
def fire_play(sender,uname):
  print(sender)
  print(uname)
  print("start play")
fire_signal.connect(fire_play)
# 或者 
@fire_signal.connect
def fire_play(sender,uname):
  print(sender)
  print(uname)
  print("start play")
#3.发送一个信号
fire_signal.send(uname ='xxx')
 
 
if __name__ == '__main__':
  app.run(debug=True)

内置信号


命名空间

python 复制代码
from blinker import Namespace
_signals = Namespace()
xx = _signals.signal('xxxxxxx')
==================================
from blinker import signal
xx = signal('xxxxxxx')


python 复制代码
from blinker import signal, Namespace

# 方式1:全局默认命名空间
sig1 = signal('login')
sig2 = signal('login')
print(sig1 is sig2)  # True ------ 同一个对象

# 方式2:自定义命名空间
ns = Namespace()
sig3 = ns.signal('login')
sig4 = ns.signal('login')
print(sig3 is sig4)  # True ------ 同一个命名空间内相同名称是同一个

# 跨命名空间比较
print(sig1 is sig3)  # False ------ 不同命名空间,即使是相同名称也是不同对象
相关推荐
我不会起名字32226 分钟前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
ThornArmor1 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
毕业设计7031 小时前
(免费领源码)基于Python的博物馆研学活动管理系统的设计与实现22724- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
python·mysql·随机森林·pycharm·django·flask·推荐算法
苏三说技术1 小时前
为什么越来越多人用OpenWiki?
后端
kyrie_sakura1 小时前
python学习笔记15 -- Anaconda,Jupyter,numpy
python·学习·jupyter·numpy
IT_陈寒1 小时前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
Bs_MoneyMagnet2 小时前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
测试老哥2 小时前
接口测试的测试用例应该怎么写?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
Zenova EdgeOS2 小时前
Python 工业边缘 redis-py 异步实战
开发语言·redis·python
码事漫谈2 小时前
FDE 的起源、形态与真实边界
后端