python的分布式组件模型。
pycom的Python项目详细描述
pycom是用python编写的简单易用的分布式组件模型。 pycom将网络应用程序的不同部分隔离,并 独立,同时允许他们之间简单直接的互动。 pycom可以被看作是一个简单而轻量级的web服务替代品。
意识形态亮点:
- 无黑魔法和大量自动生成代码的非侵入式设计
- 轻松适应快速变化的环境
- …和Python相匹配 EAFP方法
- 有效、易于实施和便携式协议
- 支持二进制附件
- 通过类似于http的会话支持有状态服务
- 低级别,足以构建自己的框架
- …仍然很简单,可以按原样使用
- 免费软件(新的BSD许可证)
技术要点:
- 独立(可能可替换)zerojson协议实现
- 易于扩展的核心库
- 不需要特殊的“容器”软件
- 对服务的自省支持
- 在具有相同接口的多个服务上进行负载平衡
- 全面的测试套件和文档
- Python2和Python3支持开箱即用
为PyCOM创建C++客户端库正在进行中: https://bitbucket.org/divius/libpycom
主要概念
使用pycom,您可以将应用程序构建为许多services, 每个运行在它自己的进程中(甚至在它自己的计算机上)。 您维护一个pycomnameserver来按名称查找服务 (顺便说一下,nameserver本身就是一个服务)。
服务提供接口,即与服务交互的命名方式。 它们与Java中的接口有些相似,但请注意 pycom不会对接口执行任何检查。接口通常有 一些方法。
服务由路径标识,路径中的部分用斜线分隔, 例如/com/foo/group/service。
界面用名称来标识,部分用圆点隔开, 例如com.foo.my-interface。
示例
服务示例(模块package1.module1):
import pycom @pycom.interface("com.foo.example") class MyService(pycom.Service): @pycom.method def bar(self, request, name, value=None): return {name : value}
运行此服务的命令行示例(如果nameserver正在运行 关于192.168.10.1:2012):
python -m pycom -a tcp://192.168.10.2:2013 -n tcp://192.168.10.1:2012 package1.module1
此服务的示例客户端代码:
import pycom context = pycom.ProxyContext(nameserver="tcp://192.168.10.1:2012") with context.locate("com.foo.example") as component: print component.bar(name="field1", value=42) # Prints {"field1" : 42} print component.bar("field1", value=42) # Prints {"field1" : 42} print component.bar("field1") # Prints {"field1" : None} print component.introspect() # Prints a lot of introspection information
快速启动
我们的要求是:
- 与POSIX兼容的操作系统(其他可能工作)
- Python2.6、2.7或>;=3.1
- 0MQ Python bindings>;=2.1.11
- six与python 3兼容 (也许我们以后再把它放下)
要运行测试套件,您还需要:
- coverage.py
- unittest2(仅限python 2.6)
- unittest2py3k(仅限python 3.1)
要测试(日志将保存在test.log中):
$ python test.py
构建html文档(需要Sphinx):
$ python setup.py build_sphinx $ <your-browser> build/sphinx/html/index.html
从源安装:
$ python setup.py install
或者通过pip
$ pip install pycom
要启动名称服务器,请使用脚本:
$ /usr/local/bin/pycom-nameserver
您可能需要调整名称服务器配置。
不要忘记阅读当前版本中的已知问题: http://packages.python.org/pycom/status.html#known-issues
支架
Pycom存储库和问题跟踪程序托管在Bitbucket上。
Download releases: http://pypi.python.org/pypi/pycom#downloads
Latest source code: https://bitbucket.org/divius/pycom/overview
Report bugs: https://bitbucket.org/divius/pycom/issues
Read documentation: http://www.pycom.org
享受=)