1

这里的问题是这样的事情是否已经存在,或者,如果没有,是否有比我在下面描述的更好的方法来实现它。

我需要允许任意主体(用户、组、站点管理员)将Event Sinks(如电子邮件地址、Webhook URL 等)添加到系统(通过 Web 界面),并为每个主体指定<Event Source, Event Type>应该是哪种类型发送给它。由于我正在为ReviewBoard执行此操作,因此我将给出一个带有假设实现的具体示例:

  1. John 创建了一个新的(一个 webhook),由;event_sink标识。postbin1
  2. John 指定将在s 上postbin1接收类型的事件(类级别-未指定);publishReviewRequestsubscriptionsource_id
  3. 当一个新review_request的被创建时, , 列出所有对 s感兴趣的Event Manager(通过 JOIN )并创建一个(实例级)将它们作为监听器绑定到他们感兴趣的特定(django 信号的名称)特定的;subscriptionsevent_sinksReviewRequestsubscriptionevent_typereview_request
  4. 当它review_request被发布时,Event Manager(谁监听publish信号)列出所有event_sinks对该review_request实例和publish信号感兴趣的人,并将信号参数分派给他们的sink方法。
  5. Webhook 会根据需要event_sink编组数据并将其发布到其 URL。

这是我想到的架构: alt text http://bayimg.com/image/aadgoaacd.jpg

我将自己开始实施这个,但我只是想确保我没有重新发明轮子。在谷歌上找不到任何东西。欢迎使用现成的包名称、对我有帮助的中途包名称和/或对我的 DIY 方法的批评。

4

1 回答 1

1

James Tauber 的django-notification为您提供了很大的帮助。如果您愿意使用该代码库,我希望看到该应用程序成熟,那将是很棒的。

于 2009-08-27T13:58:14.160 回答