Erlang端口协议
项目描述
项目URL
描述
erlport Python库实现了Erlang外部术语格式和Erlang端口协议,以便更容易地将Python和Erlang集成。
库导出以下类和函数
Port(packet=1, use_stdio=False, compressed=False) - 实现端口的类,与相应的Erlang端口连接。有关packet和use_stdio参数的说明,请参阅open_port/2。compressed是zlib压缩级别或为默认值6的True。
Protocol() - 简化请求-响应协议创建的类。
Atom(str) - 表示Erlang原子的类。
String(unicode | list) - 表示Erlang字符串的类。如果期望Unicode字符串而不是列表,则必须用作包装器。
BitBinary(str) - 表示长度不是8的倍数的Erlang位字符串的类。
decode(str) - 将二进制数据转换为项的函数。
encode(term, compressed=False) - 函数,用于将术语转换为外部格式。 compressed 是 zlib 压缩级别,或默认为 6 的 True。
IncompleteData - 当 decode() 遇到不完整输入数据时抛出的异常。
安装
先决条件
Erlang >= R11B-4
Python >= 2.4
使用 easy_install 从 setuptools 包安装库,例如这样
$ easy_install erlport
示例
请参阅源分布中的 examples 目录以获取更多示例。
对于简单的请求-响应协议,在 Python 端使用 Port 和 Protocol,如下所示
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(use_stdio=True))
在 Erlang 端,函数 hello() 可以这样调用
-module(hello). -export([hello/1]). hello(Name) -> Port = open_port({spawn, "python -u hello.py"}, [{packet, 1}, binary]), port_command(Port, term_to_binary({hello, Name})), receive {Port, {data, Data}} -> binary_to_term(Data) end.
在 Erlang shell 中测试它
1> c(hello). {ok,hello} 2> hello:hello("Bob"). "Hello, Bob"
针对Windows用户的说明
看起来 Erlang 的 open_port 函数在 Windows 上忽略了 nouse_stdio 选项。因此,必须使用 use_stdio=True 参数实例化 Port 类。
Python 必须使用 -u 选项运行,以在二进制模式下打开 stdin/stdout。
反馈
请在以下位置报告错误、提出建议或反馈
通过 <dima at hlabs.org> 发送电子邮件给我
在 http://twitter.com/hdima 上写或关注我
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
erlport-0.6.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bbd894e1502a00964bca8a84283048cee599234b5a59fffa21c82e09366a399c |
|
MD5 | 852745e9f2ca90f7c802ee7ae9b015ad |
|
BLAKE2b-256 | 8a78e2a89dd0802f2f4a04a22d2dfb1855ed75d55a6ae219ef251e0c723d0f43 |
erlport-0.6-py2.6.egg 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f6662a9b141142c1a1234af6cc9d38d7ac1ec841e59495bc1ba61e8b0b94ac6d |
|
MD5 | c336fbd31642b94ad62d7736c11d084d |
|
BLAKE2b-256 | 6d314f7393314dba575bb63036c8c573f13c35be5516b28733711a50ba9e76af |