一个简单的django.dispatch分支,用作独立的pubsub库。
Paperbo的Python项目详细描述
一个简单的django.dispatch叉,用作独立的Python 公共图书馆。
使用
报童的dispatch可以与django的相同使用;它们是 基本上是一样的。
“信号调度器”帮助分离的应用程序相互通知 事件。例如,库可以调用 独立的应用程序,而没有为它们编程,以及 无需扩展或修补库signal通知 代表发送方通过dispatcher注册了receivers
例如,假设我们有一个披萨递送库。它的工作只是 与披萨递送互联网API进行通信;而不是编程 单用户通知管道,此库的开发人员希望 向订阅的接收者发送已发送比萨饼的信号:
from dispatch import Signal delivered = Signal(providing_args=['parlor'])
当得知披萨已经送到时,图书馆可以 发送此信号:
class PizzaAPI(object): def check(self): response = self.get_response() if response.status == 'delivered': delivered.send(sender=self, parlor=response.parlor)
但是,如果周围没有人接收信号,信号就没有多大用处。 使用披萨递送库的应用程序可以注册 通过他们打算接收的信号与调度员联系的接收器:
delivered.connect(popup_window)
或者使用receiverdecorator:
from dispatch import receiver @receiver(delivered) def popup_window(sender, parlor, **kws): ...
见Django’s documentation 更多信息。
配置
报童的dispatch已准备好使用但是,它的Signal,如 django遵循一种调试模式,在这种模式下,将检查接收器 连接时Paperboy不提供 它自己的,但是您可以简单地配置它,如下例所示。
全球范围:
from dispatch import Signal Signal.debug = True
按应用程序:
from dispatch import Signal class AtariSignal(Signal): debug = True
随着技术的日益成熟:
from dispatch import Signal from atari.conf import settings class AtariSignal(Signal): @property def debug(self): return settings.DEBUG
安装
使用pip等安装工具:
pip install Paperboy
来源:
python setup.py install
运行测试
通过setup.py文件:
python setup.py test