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兼容 (也许我们以后再把它放下)

要运行测试套件,您还需要:

要测试(日志将保存在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

享受=)

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

推荐PyPI第三方库


热门话题
内部嵌套滚动视图的java Recyclerview?   返回空值的java MapPartitionFunction   java无法访问apache模块源代码中的系统定义的环境变量   java需要帮助确定用户输入的最大值和最小值   java检查文件是否存在,如果存在,则创建一个编号更高的新文件   针对许多不正确XML文档的XSD的XML验证在Java中不报告任何错误?   java有没有一种方法可以将json字符串甚至JSONObject发送给POSTMAN,而不在每个双引号前加斜杠?   java如何获得频域中两个音频信号的比率?   java 安卓 studio理解错误   java插入到部分填充的数组中   java使用流<String>创建流<CustomType>?   java开放式按键应用程序   java获取zxing生成的图像路径   使用shibboleth sso的java授权   java在运行时更改bean类名   javajooq如何从表中选择min'id'   java通过Eclipse web项目运行hadoop mapreduce字数   java同步方法与非同步方法同时执行   方法每次返回一个不同的加密字符数组   java获取ArrayList的每个元素中出现的特定字符的频率<String>