最简单的python actor中间件
pyactor的Python项目详细描述
pyactor是面向对象架构的python actor中间件 构造的思想是让两个远程参与者 以非常简单、轻量级和极简的方式快速沟通。
它支持两个版本:
- 穿线
- gevent绿色螺纹
它还包括使用xmlrpc和第二个版本的机器之间的通信。 以透明的方式使用rabbitmq消息系统。
安装
安装时使用:
python setup.py install
或:
pip install pyactor
检查是否可以执行通过克隆the repository:
cd examples python sample1.py ...
还要查看文档以获取教程:
提交将在Travis-CI自动生成和测试。
请参见codecov.io或coveralls.io处的代码覆盖率。
每次按landscape.io时,也会检查代码的运行状况。 (PEP8,常见的异味等):
第一步
此库使用两种并发实现:
- 'thread':经典线程
- 'green_thread':gevent
绿色线程的性能几乎提高了两倍。
您将需要在开始时指定要使用哪一个 使用set_context('TYPE')编写脚本。其中type是两个关键字之一 上面。
然后,首先,需要一个Host来创建一些参与者。 使用它通过给要创建的actor的类类型来派生actor 以及一个字符串,用于在主机中标识它。参见示例:
h = create_host() actor1 = h.spawn('id1', MyClass)
参与者的类必须在“告诉”和“询问”列表中定义了其方法 所以可以通过代理调用它们。在“告诉”列表中将命名为 方法是异步的,在任务列表中是同步的。 在这个例子中,我们有一个带有sync方法的类MyClass和一个 异步方法tell\me():
class MyClass: _tell =['tell_me'] _ask = ['ask_me'] def tell_me(self, msg): print msg def ask_me(self): return 'hello back'
如您所见,async方法接收一条消息并在 sync方法返回一个结果。现在可以从main调用这些方法 代码:
actor1.tell_me('Hello') print actor1.ask_me()
远程连接
与其他库解决方案不同,pyactor支持 只给主机一个IP的各种机器。例如:
host = create_host('http://127.0.0.1:1277/')
此主机已联机,因此另一台计算机只需查找它:
host = create_host('http://127.0.0.1:1679') remote_host = host.lookup_url('http://127.0.0.1:1277/', Host)
或者直接找一个演员:
c = host.lookup_url('http://127.0.0.1:1277/id1', 'MyClass', 'module')
教程
pyactor有很多例子和一个教程,解释了它的所有功能。 这个例子可以在项目的'pyactor/examples'目录中找到 (github)。 它们在文档中也作为一个教程进行了解释,托管于 readthedocs.org你可以在上面找到。