跳转到主要内容

用于编写(微)服务和其客户端的Python库

项目描述

https://readthedocs.org/projects/pysoa/badge/ https://pepy.tech/badge/pysoa https://img.shields.io/pypi/l/pysoa.svg https://api.travis-ci.org/eventbrite/pysoa.svg https://img.shields.io/pypi/v/pysoa.svg https://img.shields.io/pypi/wheel/pysoa.svg https://img.shields.io/pypi/pyversions/pysoa.svg

PySOA是一个基于RPC(远程过程调用)调用风格的通用库,用于编写快速的Python(微)服务和其客户端。它提供客户端和服务器,可以直接使用,或者(正如我们所做的那样)扩展以添加额外功能(我们的身份验证、数据库路由和其他代码作为私有中间件编写,并在该库之上运行)。

PySOA使用可插拔的“传输”概念来定义客户端和服务器之间发送请求和响应(消息)的层。默认的、生产就绪的包含传输是一个Redis pub-sub层,我们将其与Redis Sentinel一起在集群中使用。单个Redis集群能够以极高的效率和期望的负载均衡属性每秒处理成千上万的PySOA消息。还有一个本地传输实现,主要用于测试和演示,但在适当的情况下也可以用于生产。

基本原则

  • 服务和操作都具有简单的名称,可以通过名称由客户端调用。您可以单独调用操作,或者将多个操作调用捆绑成一个“任务”以串行运行(在出错时可以选择中止或继续)。

  • 请求和响应只是Python字典,PySOA使用我们的开源验证框架Conformity来验证它们的模式。

  • 默认情况下,消息体使用MessagePack进行编码(然而,您可以定义自己的序列化器),一些非标准类型使用MessagePack扩展进行编码,例如日期、时间、日期时间以及货币金额(使用我们的开源currint库)。

  • 请求有一个上下文,它来自原始客户端上下文(Web请求、API请求等),并自动链入服务内部后续的客户端调用。这用于上下文请求信息,如关联ID、认证令牌、区域设置等。

  • 我们将“SOA开关”作为功能标志/切换的第一方实现。作为上下文的一部分,它们与每个请求捆绑在一起,并自动链入,以整数形式打包以确保它们具有最小的开销。

本简介总结了使用PySOA的一些关键概念。有关更详细的文档,请参阅PySOA文档

许可证

PySOA采用Apache License,版本2.0授权。

安装

PySOA在PyPi上可用,可以通过Pip直接安装或在setup.pyrequirements.txtPipfile中列出。

pip install 'pysoa~=1.2'
install_requires=[
    ...
    'pysoa~=1.2',
    ...
]
pysoa~=1.2
pysoa = {version="~=1.2"}

文档

完整的PySOA文档可在Read the Docs上找到!

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

pysoa-1.4.9.tar.gz (157.6 kB 查看哈希值)

上传时间

构建分布

pysoa-1.4.9-py27.py35.py36.py37.py38-none-any.whl (194.7 kB 查看哈希值)

上传时间 Python 2.7 Python 3.5 Python 3.6 Python 3.7 Python 3.8

支持