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如何在Android中更新从互联网上获取的时间?   java我可以调用binarySearch方法而不实现comparator/comparable吗?   java如何使用Tomcat7作为React开发服务器来替换节点。js服务器?   java在Android游戏中如何保存和访问数据?   java为什么IntelliJ不能导入本地类?   检查“if”语句后出现java空指针异常   用户界面通过rxtx库和SerialPortEvent接收JAVA中的数据,并在jTextArea中显示字符串文本   javasocket文件传输未正确读取   java错误代码:1215无法添加外键约束   java如何告诉Gradle在哪里查找javax。servlet?   java无法解析匹配的构造函数   mysql从何处开始Java项目   Java在数组中比较字符串   java PrimeFaces仪表板列宽   C++ JNI: java。使用defineClass时lang.AbstractMethodError;