Django中用户可配置的信号机制
问题描述:
这里的问题是,这样的事情是否已经存在,或者如果不存在,是否有更好的方式来实现它,而不是我下面描述的。Django中用户可配置的信号机制
我需要让任意主体(用户,组,网站管理)增加Event Sink
S(如电子邮件地址,网址Webhook等),系统(通过Web界面),对于每一个,指定应将哪种<Event Source, Event Type>
发送给它。因为我做这个ReviewBoard,我给一个假设实现一个具体的例子:
- 约翰创建一个新的
event_sink
(一 网络挂接),由postbin1
鉴定; - 约翰指定
postbin1
将收到ReviewRequest
S(一类级subscription
- 的source_id
是不确定的)publish
类型的事件; - 当一个新的
review_request
被创建时,Event Manager
,列表(通过JOIN与subscriptions
)所有event_sinks
兴趣ReviewRequest
S和创建(实例级)subscription
结合他们作为一个听者其特定event_type
(的名称django信号)感兴趣的和到具体的review_request
; - 当该
review_request
被公布后,Event Manager
(谁听的publish
信号),列出了所有event_sinks
感兴趣的是review_request
实例和publish
信号和调度信号参数的sink
方法。 - Webhook
event_sink
将数据封送然后取出并将其张贴到其URL。
这是我想到的架构: alt text http://bayimg.com/image/aadgoaacd.jpg
我即将开始这个实施自己,但我只是想确保我不会重新发明轮子。在Google上找不到任何内容。准备使用的软件包名称,对我有帮助的中途软件包名称和/或对我的DIY方法的批评都是受欢迎的。
答
我曾经构建过something very similar,但作为一个小型的REST应用程序(在TurboGears中)。
从来没有得到性能和可靠性,直到我可以使用它的任何严重的事情。它是在webhook开始生根之前设计的,所以我现在可能会考虑这一点。
因为我现在也在Django工作,所以我会很好奇看到你想出什么。我认为你的设计是正确的,这种事件调度器非常有用,值得研究。