Frage

PyPubSub :

  

Pypubsub bietet eine einfache Möglichkeit für   Ihre Python-Anwendung zu entkoppeln   seine Komponenten: Teile Ihrer   Anwendung kann Nachrichten veröffentlichen (mit   oder ohne Daten) und andere Teile können   subscribe / empfangen sie. Dies erlaubt   Meldung „Absender“ und Meldung   „Hörer“ nicht bewusst zu sein von jedem   andere:

     
      
  • Man braucht nicht die andere
  • importieren   
  • ein Sender braucht nicht zu wissen,      
        
    • "die" bekommt die Nachrichten,
    •   
    • , was die Zuhörer mit den Daten tun,
    •   
    • oder auch wenn ein Zuhörer die Nachrichtendaten erhalten.
    •   
  •   
  • in ähnlicher Weise, Hörer müssen nicht darum kümmern, wo Nachrichten kommen.
  •   
     

Dies ist ein großes Werkzeug für die Umsetzung   Model-View-Controller-Architektur   oder eine ähnliche Architektur, die   fördert Entkopplung der Komponenten.

Es scheint ziemlich viele Python-Module für die Veröffentlichung sein / abonnieren floating rund um das Internet, von PyPubSub, PyDispatcher einfache "hausgemachte" Klassen.

Gibt es spezifische Vor- und Nachteile, wenn verschiedene unterschiedliche Module zu vergleichen? Welche Sets von Modulen gebenchmarkt wurden und verglichen?

Vielen Dank im Voraus

War es hilfreich?

Lösung

PyDispatcher verwendet wird, stark in Django und es funktioniert perfekt für mich (und für ganze Django Gemeinschaft, denke ich).

Wie ich mich erinnere, gibt es einige Performance-Probleme:

  • Argumente von PyDispatcher gemacht Prüfung ist langsam.
  • Nicht verwendete Anschlüsse müssen unnötigen Aufwand.

AFAIK es sehr unwahrscheinlich ist, Sie in diese Fragen in einer kleinen bis mittelgroßer Anwendung ausgeführt werden. So können diese Fragen nicht Sie betreffen. Wenn Sie glauben, jedes Pfund Leistung benötigen (vorzeitige Optimierung ist die Wurzel aller Übel!), Sie bei Änderungen vorgenommen PyDispatcher in Django aussehen können.

Hope, das hilft.

Andere Tipps

Das beste Versandpaket für Python scheint den Dispatch-Moduls zu innerhalb django (genannt Signale in der Dokumentation ). Sie ist unabhängig von den übrigen django, und kurz ist, dokumentiert, getestet und sehr gut geschrieben.

Edit: Ich gegabelt dieses Projekt in ein unabhängiges Signal Projekt Python.

Ich sah sorgfältig vor kurzem unter py-amqplib als AMQP Client eines handeln RabbitMQ Broker. Letzteres Werkzeug wird in Erlang geschrieben.

Wenn Sie schauen, um Ihre App zu entkoppeln. dann, warum Paar es auf die Sprache selbst? Erwägen Sie die Verwendung Nachrichtenwarteschlangen, die Sprache neutral sind und dann haben Sie wirklich bekommen Raum zu wachsen!

Dass gesagt wird, nimmt AMQP Mühe zu verstehen und kann mehr als Sie bereit sind, Ihre Anwendung zu übernehmen, wenn. arbeitet als nur in Ordnung ist. YMMV.

Hier ist eine neuere Version: https://github.com/shaunduncan/smokesignal . „ smokesignal ist eine einfache Python-Bibliothek für das Senden und Empfangen von Signalen Er zieht Inspiration aus den django Signal Rahmen, sondern als Mehrzweck-Variante gemeint ..“ Beispiel:

from time import sleep
import smokesignal

@smokesignal.on('debug')
def verbose(val):
    print "#", val


def main():
    for i in range(100):
        if i and i%10==0:
            smokesignal.emit('debug', i)
        sleep(.1)

main()

Einige Bibliotheken, die ich gefunden habe, die noch nicht erwähnt wurden:

Es gibt auch die Bibliotheken von PJ Eby, RuleDispatch und dem PEAK-Projekt, speziell Trellis. Ich weiß nicht, was ihr Status tatsächlich aber die Mailingliste recht aktiv ist.

Letzte Version von Trellis auf PyPI

Trellis doc

Ich habe auch die Komponenten aus dem Kamaelia Projekt der BBC. Axon ist ein interessanter Ansatz, aber mehr als Komponente vom Publisher Verbraucher inspiriert. Nun, das ist die Website etwas nicht up-to-date überhaupt ... Es war ein Projekt oder 2 in der Google SoC 2008 und die Arbeit getan wird.

Sie wissen nicht, ob es helfen:)

Edit: Ich habe gerade Py-notify , das ein „unorthodox "Umsetzung des Observer-Muster. Es hat die meisten der Funktionen, die ich für meine eigenen Werkzeuge benötigen.

Die Tatsache allein, dass PyPubSub ein etwas chaotisch verwalteten Projekt zu sein scheint (das Wiki auf SF ist tot, die Website (ein anderes Wiki), die auf SF verbunden ist, wird zur Zeit gebrochen) Grund wäre genug für mich, es nicht zu benutzen. PyDispatcher hat eine intakte Website, aber die einzige Dokumentation scheint sie ist, um die eine für die API von den Docstrings erzeugt. Kein Verkehr auf der Mailing-Liste entweder ... ein schlechtes Zeichen!

Als Mike auch erwähnt, ist es durchaus möglich, eine Lösung zu wählen, die unabhängig von Python ist. Jetzt verstehen Sie mich nicht falsch, ich Liebe Python, aber immer noch, in diesem Bereich kann es sinnvoll, einen Rahmen machen verwenden, das von der Programmiersprache entkoppelt ist.

Ich bin nicht mit Messaging erlebt, aber ich habe vor, einen Blick in ein paar Lösungen zu haben. Bisher diese beiden (kostenlos, Open Source) Projekte scheinen die vielversprechendste für mich zu sein (zufällig, beide sind Apache-Projekte):

Beide scheinen ziemlich gereift Projekte, zumindest eine weit wie Dokumentation und Gemeinschaft. Ich kann allerdings nicht auf die Software-Qualität kommentieren, wie ich sagte, ich nicht von der Software verwendet haben.

Qpid Schiffe mit Client-Bibliotheken für Python, aber man könnte auch verwenden py-amqplib . Für ActiveMQ gibt es pyactivemq , die Sie entweder über STOMP (Streaming Text Oriented Messaging verwenden können, um eine Verbindung Protokoll) oder über Openwire.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top