python的事件驱动中间件库
pyeventsystem的Python项目详细描述
图片:https://travis-ci.org/CloudVE/pyeventsystem.svg?branch=master :目标:https://travis-ci.org/CloudVE/pyeventsystem :alt:生成状态
。图片:https://codecov.io/gh/CloudVE/pyeventsystem/branch/master/graph/badge.svg :目标:https://codecov.io/gh/CloudVE/pyeventsystem :alt:覆盖状态
PyEventSystem
pyeventsystem是Python的事件驱动中间件库除了 它还提供了订阅和侦听事件的机制 一种截取函数的机制,因此适合于编写 中间件通过拦截功能,可以在之前、之后注入中间件 甚至取代原来的功能。它还为 将相关的事件处理程序分组到中间件类中,使 管理可安装的中间件
简单的例子
。代码块::python
from pyeventsystem.middleware import SimpleMiddlewareManager
from pyeventsystem.middleware import dispatch
from pyeventsystem.middleware import observe
class MyMiddleWare(object):
def __init__(self, event_dispatcher):
self.events = event_dispatcher
@dispatch("a.series.of.unfortunate.events", priority=2500)
def perform_villainy(self, name):
return "Drop ACME Anvil on " + name
@observe("a.series.of.unfortunate.events", priority=2400)
def pre_log_villainy(self, event_args, name):
print("Prepping for villainy: " + name)
@observe("*.unfortunate.events", priority=2600)
def post_log_villainy(self, event_args, name):
print("Result of villainy: {0}".format(event_args['result']))
manager = SimpleMiddlewareManager()
myobj = MyMiddleWare(manager.events)
manager.add(myobj)
myobj.perform_villainy("RoadRunner")
在这个例子中,我们截取了perform_villainy
函数,并且
在执行之前和之后都观察了函数。
输出为:
代码块::控制台
Prepping for villainy: RoadRunner
Result of villainy: Drop ACME Anvil on RoadRunner