2009-08-13 46 views
1

這裏的問題是,這樣的事情是否已經存在,或者如果不存在,是否有更好的方式來實現它,而不是我下面描述的。Django中用戶可配置的信號機制

我需要讓任意主體(用戶,組,網站管理)增加Event Sink S(如電子郵件地址,網址Webhook等),系統(通過Web界面),對於每一個,指定應將哪種<Event Source, Event Type>發送給它。因爲我做這個ReviewBoard,我給一個假設實現一個具體的例子:

  1. 約翰創建一個新的event_sink(一 網絡掛接),由postbin1鑑定;
  2. 約翰指定postbin1將收到ReviewRequest S(一類級subscription - 的source_id是不確定的)publish類型的事件;
  3. 當一個新的review_request被創建時,Event Manager,列表(通過JOIN與subscriptions)所有event_sinks興趣ReviewRequest S和創建(實例級)subscription結合他們作爲一個聽者其特定event_type(的名稱django信號)感興趣的到具體的review_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

我即將開始這個實施自己,但我只是想確保我不會重新發明輪子。在Google上找不到任何內容。準備使用的軟件包名稱,對我有幫助的中途軟件包名稱和/或對我的DIY方法的批評都是受歡迎的。

回答

1

django-notification作者:James Tauber讓你有一個很好的方式。我很希望看到這個應用程序的成熟,如果你願意努力工作,那將是非常好的代碼庫。

1

我曾經構建過something very similar,但作爲一個小型的REST應用程序(在TurboGears中)。

從來沒有得到性能和可靠性,直到我可以使用它的任何嚴重的事情。它是在webhook開始生根之前設計的,所以我現在可能會考慮這一點。

因爲我現在也在Django工作,所以我會很好奇看到你想出什麼。我認爲你的設計是正確的,這種事件調度器非常有用,值得研究。