2009-08-13 9 views
1

Die Frage ist, ob so etwas bereits existiert oder, wenn nicht, ob es einen besseren Weg, um es als das zu erreichen, was ich unten beschreibe.Benutzer konfigurierbare Signal-Mechanismus in Django

Ich brauche einen beliebigen Auftraggeber zu ermöglichen (Benutzer, Gruppe, Site Admin) Event Sink s hinzuzufügen (wie E-Mail-Adressen, Webhook URLs, etc.) an das System (über das Webinterface) und, für jeden, Geben Sie an, welche Arten von <Event Source, Event Type> an sie gesendet werden sollen. Da ich für ReviewBoard dies zu tun bin, werde ich ein konkretes Beispiel mit einer hypothetischen Umsetzung geben:

  1. John erstellt eine neue event_sink (eine Webhook), identifiziert durch postbin1;
  2. John gibt an, dass postbin1 Ereignisse des Typs publish auf ReviewRequest s empfangen wird (eine Klasse-Ebene subscription - die source_id ist nicht näher bezeichnet); die Event Manager, Listen (durch einen JOIN mit subscriptions) alle event_sinks interessiert in ReviewRequest s
  3. Wenn ein neuer review_request erstellt wird, und erstellt eine (Instanzebene) subscription sie als Zuhörer auf ihre besonderen event_type (der Name einer Bindung Djangosignal) von Interesse und zu dem spezifischen review_request;
  4. Wenn die review_request veröffentlicht wird, die Event Manager (der das publish Signal lauscht) listet all event_sinks interessiert in dieser review_request Instanz und das publish Signal und sendet die Signalparameter auf ihre sink Methode.
  5. Der Webhook event_sink marshallt die Daten jedoch gefällt es und sendet es an seine URL.

Dies ist das Schema ich gedacht: alt text http://bayimg.com/image/aadgoaacd.jpg

ich bin dies selbst zu Beginn der Umsetzung, aber ich möchte nur sicherstellen, ich bin neu zu erfinden das Rad nicht. Konnte bei Google nichts finden. Gebrauchsfertige Paketnamen, halbe Paketnamen, die mir helfen, und/oder Kritik an meinem DIY-Ansatz sind willkommen.

Antwort

1

django-notification von James Tauber bekommen Sie einen guten Teil des Weg dorthin. Ich würde gerne sehen, dass die App ausgereift ist, wenn Sie bereit sind, von dieser Codebasis zu arbeiten, wäre es großartig.

1

Ich baute einmal something very similar, aber als kleine, REST-App (in TurboGears).

Nie ganz die Leistung und Zuverlässigkeit bis zu dem, wo ich es für etwas ernstes verwenden konnte. Und es wurde entworfen, bevor Webhooks anfingen, Wurzeln zu schlagen, also würde ich das jetzt wahrscheinlich in Betracht ziehen.

Da ich jetzt auch in Django arbeite, werde ich gespannt sein, was Sie erwartet. Ich denke, Ihr Design ist in etwa richtig, und diese Art von Event-Dispatcher ist sehr nützlich und es lohnt sich, daran zu arbeiten.

1

Ist das nicht ein Fall für Pub/Sub? Vielleicht etwas wie that