Einfache Interprozesskommunikation

Ich suche nach einem einfachen Weg, um Nachrichten von einem Prozess zu übergeben (Perl-Skript, kurzlebig) zu einem anderen (Python-Skript, langlebig) – beide Prozesse lokal auf dem gleichen Rechner. Ich habe einige Recherchen gemacht, aber was ich gefunden habe, war entweder über meinen Kopf oder schien unnötig komplex zu sein – ich habe mich ein bisschen verloren und verwirrt.

Ich stelle mir ein minimales Beispiel etwa wie folgt vor:

# listener.py class Listener: def __init__(self, port) self.port = port def on_message(self, msg): print "%s: %s" % (timestamp, msg) recipient = Listener(1234) # sender.pl sub send_message { my ($msg, $port) = @_; # ... } send_message("hello world", 1234); 

Irgendwelche Hinweise darauf, wie man es löst und / oder wo man das lesen kann, wäre sehr dankbar!

3 Solutions collect form web for “Einfache Interprozesskommunikation”

Im Allgemeinen interessieren Sie sich für Steckdosen. Ein guter Ort, um nur die benötigten groben Informationen zu erhalten, ist die Dokumentation von IO :: Socket :: INET oder mehr Basic Socket-Sachen in Perl von perldoc perlipc

Es stellt sich heraus, dass Interprozess-Kommunikation ist, während auf der Oberfläche einfach, tatsächlich voller Komplikationen. Was auch immer jemand hier in Bezug auf eine vereinfachte Antwort erzählt, denkst immer daran, dass es wahrscheinlich viele Einschränkungen gibt, die unsagend bleiben.

Jetzt mit diesem Haftungsausschluss aus dem Weg, ich behaupte, dass, was Sie wahrscheinlich wollen, sind Nachrichten Warteschlangen. Dies basiert auf der Tatsache, dass Sie keine IP-Adresse in Ihrem Beispiel-API enthalten. Wenn Sie über Maschinen gehen müssen, wollen Sie Steckdosen. Allerdings denke ich, dass Sie Nachrichtenschlangen finden, um einfacher zu verstehen, wenn Sie mit der Tatsache umgehen können, dass dies nur für die Kommunikation mit Prozessen auf der gleichen Maschine ist.

Ein guter Ausgangspunkt für Perl ist:
http://perldoc.perl.org/IPC/Msg.html

Für python, das scheint zu erklären (ignorieren die anderen Arten von ipc wie Semaphoren):
http://semanchuk.com/philip/sysv_ipc/

Und für powered-up-Kommunikation im gleichen Stil wie Sockel, betrachten Blick auf 0MQ. Es kann verschiedene Kommunikationstechnologien nutzen, je nachdem, wo sich deine beiden Apps befinden, und selbst für lokale Prozesse ist es sehr einfach zu bedienen und löst die Probleme für dich.

http://zeromq.org

  • Gibt es ein Äquivalent zu der Perl Regexes '\ K Backslash Sequenz in Python?
  • Datei Manipulation: Scripting Frage
  • Kann ich benannte Gruppen in einer Perl-Regex verwenden, um die Ergebnisse in einem Hash zu bekommen?
  • Bitte stellen Sie eine Mehrfachverarbeitungsbibliothek in Perl oder Ruby vor
  • Versuchen, DBM-Datei zu lesen
  • Split 10 Milliarden Zeile Datei in 5.000 Dateien nach Spaltenwert in Perl oder Python
  • Auflistung aller Muster, die ein Regex entspricht
  • Warum gibt es keine Scripting-Sprachen, die Unicode an die Windows-Konsole ausgeben?
  • Erfassen und Ändern von Strings in PDFs
  • Programmatisches Extrahieren von Daten aus einer Excel-Tabelle
  • Hat Python so etwas wie Perl 5.10's "state" Variablen?
  • Python ist die beste Programmiersprache der Welt.