Skip to main content

Erlang port protocol

Project description

Project URLs:

Description

The erlport Python library implements Erlang external term format and Erlang port protocol for easier integration Python and Erlang.

The library exports the following classes and functions:

  • Port(packet=1, use_stdio=False) - class implementing port which connects with the corresponding Erlang port. See open_port/2 for description of packet and use_stdio arguments.

  • Protocol() - class which simplifies creation of request-response protocols.

  • Atom(str) - class which represents an Erlang atom.

  • String(unicode) - class representing an Erlang string which also can be an array of integers.

  • decode(str) - function to convert binary data into a term.

  • encode(term) - function to convert a term into the external format.

  • IncompleteData - exception raised by decode() in case of incomplete input data.

Installation

Prerequisites:

  • Erlang >= R11B-4

  • Python >= 2.4

To install the library use easy_install from setuptools package like this:

$ easy_install erlport

Examples

See examples directory in the source distribution for additional examples.

For simple request-response protocol use Port and Protocol on the Python side like this:

from erlport import Port, Protocol

class HelloProtocol(Protocol):

    def handle_hello(self, name):
        return "Hello, %s" % name

if __name__ == "__main__":
    proto = HelloProtocol()
    proto.run(Port())

On the Erlang side function hello() can be called like this:

-module(hello).
-export([hello/1]).

hello(Name) ->
    Port = open_port({spawn, "python hello.py"},
        [{packet, 1}, nouse_stdio, binary]),
    port_command(Port, term_to_binary({hello, Name})),
    receive
        {Port, {data, Data}} ->
            binary_to_term(Data)
    end.

Test it in the Erlang shell:

1> c(hello).
{ok,hello}
2> hello:hello("Bob").
"Hello, Bob"

Feedback

Please report bugs, offer suggestions or feedback at:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

erlport-0.3.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

erlport-0.3-py2.6.egg (12.2 kB view details)

Uploaded Egg

File details

Details for the file erlport-0.3.tar.gz.

File metadata

  • Download URL: erlport-0.3.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for erlport-0.3.tar.gz
Algorithm Hash digest
SHA256 fb299e45d984ae245765ef0649af98832b6258f159918ad84bd2c3dc958cf728
MD5 25fc7d0064958e2ef8190e91b60ccb32
BLAKE2b-256 15f55cb9896b8c182c08dc423ff72637f22442400ce18a431c24458ecee1af76

See more details on using hashes here.

File details

Details for the file erlport-0.3-py2.6.egg.

File metadata

  • Download URL: erlport-0.3-py2.6.egg
  • Upload date:
  • Size: 12.2 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for erlport-0.3-py2.6.egg
Algorithm Hash digest
SHA256 5883ea17904613bcdacf72d8040151d7951145734164855497a2640a627390fc
MD5 c4a6330334c1b919bb7ac4bca80e73c3
BLAKE2b-256 6400a2d0bc96732fc707ad549998f5de5122b9baa7f30eddc2f8b005b6526836

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page