2010-12-13 9 views
7

Mögliche Duplizieren:
best way to integrate erlang and pythonWie kann ich Erlang von Python aufrufen?

Um einige leistungsstarke Funktionen von erlang zu verwenden, sollte ich erlang Programm aus Python nennen: Wie kann ich das tun? Vielen Dank ~

+0

Können Sie eine Beschreibung des Problems angeben, das Sie lösen möchten? Ich habe Schwierigkeiten, an einen gültigen Anwendungsfall für eine Erlang-Anwendung zu denken, die von einer Python-App verwaltet wird. Auf welche leistungsstarken Funktionen beziehen Sie sich auch? – dsmith

Antwort

8

In Erlang können Sie mit der externen Welt über Ports kommunizieren, die eine Byte-orientierte Schnittstelle zum externen Programm bietet.

Sie können auch einen Blick auf erlport werfen, die eine Python-Bibliothek ist, die das Erlang-Portprotokoll implementiert.

+0

Ich habe den Weg gefunden, Python von Erlang aufzurufen, aber ich weiß nicht, wie ich Erlang von Python aufrufen soll. Selbst der Erlport, sieht nur die Möglichkeit aus, Python von Erlang aufzurufen. – Suge

+0

ok. Eine andere Sache, die Sie versuchen können, ist die Erlang Virtual Machine als Daemon mit dem Befehl "runerl" auszuführen. Dadurch werden zwei benannte Pipes in "/ tmp" zum Lesen und Schreiben (erlang.pipe.1.r und erlang.pipe.1.w) erstellt. Mit Python können Sie den Befehl (wie Sie in der erlang Befehlszeile verwenden) in die Named Pipe schreiben, die VM wird sie ausführen und Sie können die Ausgabe von der Named Pipe lesen. Hoffe, das ist was du brauchst. – Arunmu

3

Werfen Sie einen Blick auf BERT-RPC. Es ermöglicht remote procedure calls und wirft, Daten anfordern (einschließlich Streaming). Dort finden Sie verschiedene Bibliotheken für einige Sprachen einschließlich Python.

In Ihrem Fall können Sie einfach erlang Server mit ernie einrichten und mit ihm über python-bertrpc Client kommunizieren. Beide Projekte sind dokumentiert.

1

Wir verwenden meist JSON über HTTP, um dies zu tun. In einigen Fällen möchten Sie möglicherweise ein robusteres Messaging-Protokoll (z. B. AMQP mit RabbitMQ) verwenden, aber es gibt selten einen guten Grund für Python, das Erlang-Verteilungsprotokoll direkt zu sprechen. Manchmal verwenden wir erlport, um Dinge statt JSON zu serialisieren, wenn Leistung etwas wichtiger ist.

Verwandte Themen