最简单的python actor中间件

pyactor的Python项目详细描述


pyactor是面向对象架构的python actor中间件 构造的思想是让两个远程参与者 以非常简单、轻量级和极简的方式快速沟通。

它支持两个版本:

  • 穿线
  • gevent绿色螺纹

它还包括使用xmlrpc和第二个版本的机器之间的通信。 以透明的方式使用rabbitmq消息系统。

安装

安装时使用:

python setup.py install

或:

pip install pyactor

检查是否可以执行通过克隆the repository

cd examples
python sample1.py
...

还要查看文档以获取教程:

Documentation Status

提交将在Travis-CI自动生成和测试。

https://travis-ci.org/pedrotgn/pyactor.svg?branch=master

请参见codecov.iocoveralls.io处的代码覆盖率。

https://codecov.io/gh/pedrotgn/pyactor/branch/master/graph/badge.svg

每次按landscape.io时,也会检查代码的运行状况。 (PEP8,常见的异味等):

Code Health

第一步

此库使用两种并发实现:

  • '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你可以在上面找到。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Gson类中的java验证错误   If和elseif之间的java差异?   字典Java8地图。输入比较器   java连接到远程计算机以获得WMI支持   java如何使用改型处理JSON对象中的空值   在Java中使用Comparator时不可编译的源代码   java将Jar添加到JSP的运行时路径   带有随机对象的while循环的java大O时间复杂性   java可以在不考虑参数的情况下模拟方法吗?   java我有一个简单的代码,它不工作。无法修复错误“println”   向eclipse添加Xively java库   java是否可以启用本机代码的缓存?   全局变量如何在Java中的所有类之间共享要使用的语言环境?   Java内存游戏如何翻转单个卡?