2010-12-13 5 views
7

Можно создать дубликат:
best way to integrate erlang and pythonКак я могу назвать erlang из Python?

Чтобы использовать некоторые мощные функции Эрл, я должен позвонить Erlang программу из Python, как я могу это сделать? Спасибо ~

+0

Можете ли вы описать проблему, которую вы пытаетесь решить? Я изо всех сил пытаюсь думать о допустимом прецеденте для приложения Erlang, управляемого приложением Python. Какие мощные функции вы имеете в виду? – dsmith

ответ

8

В Erlang вы можете общаться с внешним миром, используя порты, которые обеспечивают внешний интерфейс, ориентированный на байты.

Вы также можете посмотреть erlport, который представляет собой библиотеку python, реализующую протокол портов Erlang.

+0

Я нашел способ вызвать python из erlang, но я не знаю, как назвать erlang fron python. Даже erlport выглядит только для того, чтобы вызвать python от erlang. – Suge

+0

ОК. Еще одна вещь, которую вы можете попробовать, - запустить виртуальную машину Erlang в качестве демона с помощью команды «runerl». Это создаст два именованных канала в «/ tmp» для целей чтения и записи (erlang.pipe.1.r And erlang.pipe.1.w). Используя python, вы можете написать команду (как вы используете в командной строке erlang) для именованного канала, VM ее выполнит, и вы сможете получить результат из прочитанного именованного канала. Надеюсь, это то, что вам нужно. – Arunmu

3

Посмотрите на BERT-RPC. Он позволяет выполнять remote procedure calls и выполняет отбор, запрашивает данные (включая потоковое). Там вы найдете различные библиотеки для некоторых языков, включая Python.

В вашем случае вы можете просто установить сервер erlang с помощью ernie и связаться с ним через python-bertrpc клиент. Оба проекта документированы.

1

В основном мы используем JSON через HTTP для этого. В некоторых случаях вы можете использовать более надежный протокол обмена сообщениями (например, AMQP с RabbitMQ), но редко существует хорошая причина, по которой Python может напрямую говорить о протоколе распределения Erlang. Иногда мы используем erlport для сериализации вещей вместо JSON, когда производительность немного важнее.

Смежные вопросы