blinker 简单试用

以前简单说过blinker的能力,以下是一个简单试用说明

简单试用

  • app.py
from blinker import signal
# 定义发送的
class Processor:
    def __init__(self,name):
        self.name = name

    def go(self, data):
        ready = signal('ready')
        ready.send(self, data=data)    
        print("Processing.")
        complete = signal('complete')
        complete.send(self, data=data)
        return self._data

    def get_data(self):
        return self._data

# 定义消息接收处理   
def subscriber(sender, data):
    print(f"Subscriber received data: {data}")
    sender._data = data
    print(f"Data saved to {sender.__dict__}.")

ready = signal('ready')
ready.connect(subscriber)

processor_a = Processor('a')
processor_a.go("Hello") 
  • 效果

  • 基于装饰器模式的
from blinker import Signal

msg = Signal('msg')

@msg.connect
def subscriber(sender, **kw):
    print(f"Subscriber received data: {kw}")
    sender._data = kw
    print(f"Data saved to {sender.__dict__}.")

msg.send("Hello")

说明

blinker 是一个很值得使用的消息处理库,可以解决一些基于事件的业务处理问题

参考资料

https://github.com/pallets-eco/blinker

https://blinker.readthedocs.io/en/stable/

posted on 2025-04-20 08:00  荣锋亮  阅读(35)  评论(0)    收藏  举报

导航