Grundsätzliche Frage zum Eventhandling

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nonickatall
User
Beiträge: 19
Registriert: Dienstag 31. Januar 2017, 21:33

Hallo,

mich treibt da etwas wegen eines geplanten Projektes um...

Wenn ich in einem Python Programm feststelle, das ein anderes laufendes Python Programm etwas tun soll und ich möchte das performant (max 1 Sek Latenz) und sicher tun, und schreibe aber sowieso zu diesem Zweck einen Datensatz in eine SQL Tabelle.

Ist es dann sinnvoll einen Event Listener zu bauen, der im Zielprogramm auf das Event, (in einer SQL Tabelle erscheint ein neuer Datensatz) hört und das Zielprogramm dann seinerseits tut was es soll? Vor allen wenn beide Programme sogar auf verschiedenen Rechnern laufen?

Oder ist es sinnvoller das Ziel Programm dann, wie auch immer, von außen aufzurufen?

Kann mich da jemand erhellen? ;-)

Falls das zu wirr war erkläre ich mich gerne genauer.. :mrgreen:

Vielen Dank im Voraus
Ralf
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Kommt darauf an, würde ich sagen. Einige DBMS kann man dazu bringen, dass sie Ereignisse liefern wenn sich etwas an der Datenbank geändert hat. PostgreSQL beispielsweise per NOTIFY/LISTEN. Da könnte das Zielprogramm einfach blockierend drauf warten. Oder es pollt einfach alle halbe Sekunde. Nicht unbedingt schön und skaliert nicht, aber in bestimmten Situationen eine gangbare Lösung.

Ansonsten könnte das Zielprogramm ein kleiner Webservice sein, über den man neue Datensätze ankündigen kann.

Oder man ruft das per SSH jedes mal auf. Das wäre aber sicher nicht ganz ”billig” was den Verbindungsaufbau angeht, auch wenn das normalerweise in der Latenzzeit von maximal einer Sekunde liegen sollte.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn man wirklich auf Latenz achten muß, dann benutzt man einen Message Broker wie z.B. RabbitMQ.
Antworten