跳转到主要内容

Callosum RPC库

项目描述

Callosum

一个RPC传输库

它通过封装低层传输实现(例如,ZeroMQ)为上层RPC层(例如,Apache Thrift)提供异步多通道顺序保持的消息和数据流传输。

它旨在遵循Python asyncio中的最新编码风格和约定。

胼胝体 是连接人类大脑两个半球的一束神经纤维。

先决条件

Python 3.11或更高版本。

特性

  • RPC
    • 原生超时和取消支持
    • 显式从服务器到客户端的错误传播,包括字符串化的跟踪信息
    • 基于用户定义键的有序处理,同时保持执行异步
  • 流式传输
    • 广播和共享管道
  • 可选客户端身份验证和加密通信
    • 目前仅支持ZeroMQ及其CURVE库
  • 可选使用snappy进行消息压缩
  • 可替换和可组合的底层/上层(ZeroMQ/Redis + JSON/msgpack/Thrift)

计划中的功能

  • 托管流式传输(带确认)
  • 隧道传输,将其他通道和通用网络流量捆绑在单个连接中
  • 双向RPC
  • 大消息的分块传输

安装

安装核心

$ pip install -U pip setuptools
$ pip install callosum

您可能需要添加额外的依赖项,例如

$ pip install 'callosum[zeromq,redis,thrift,snappy]'

示例

请查看示例目录。

开发

使用您喜欢的工具创建一个虚拟环境或隔离的Python环境。

在其内部,按照以下方式运行可编辑安装

$ pip install -U pip setuptools
$ pip install -U -r requirements/dev.txt

更改

1.0.3 (2024-03-04)

修复

  • 将yarl版本要求放宽,以避免在下游Backend.AI平台上潜在依赖项冲突(《#28》问题[28]

1.0.2 (2024-02-29)

修复

  • 稳定ZMQ RPC身份验证和畸形数据包处理(《#27》问题[27]

其他

  • 更新依赖项,包括pyzmq('>=23' → '>=25.1.1' 以支持Python 3.12)和开发工具,包括ruff 以替换black格式化工具(《#26》问题[26]

v1.0.1 (2023-09-18)

修复

  • 防止在日志中泄露密钥,并在连接ping上允许无限超时(《#24》问题[24]

v1.0.0 (2023-09-14)

重大更改

  • 现在它需要Python 3.11才能运行!

特性

  • 实现基于ZeroMQ的ZAP协议的完整版本,使用CURVE密钥对进行安全、加密的RPC通信(《#21》问题[21]

v0.9.10 (2022-02-17)

修复

  • 修复在Ubuntu 20.04的aarch64上使用较旧的libzeromq构建时pyzmq的属性错误,通过动态加载常量声明来修复(《#20》问题[20]

v0.9.9 (2021-10-05)

修复

  • rpc.Peer实例的输出队列中显式调用task_done(),以避免在连接的协程中潜在缺失唤醒(《#16》问题[16]

v0.9.8 (2021-10-05)

特性

  • lower.zeromq: 添加传输选项以附加日志记录底层套接字事件的监视器(《#17》问题[17]

修复

  • 改进当库用户显式指定时对zsock_opts的处理,因为之前它会在绑定器和连接器中引起参数错误(《#18》问题[18]

v0.9.7 (2020-12-22)

特性

  • 在RPC用户/内部错误中提供异常的repr(),以更好地进行应用程序级别的错误日志记录(《#15》问题[15]

v0.9.6 (2020-06-05)

特性

  • upper.rpc:通过添加CANCELLED RPC消息类型,支持服务器端取消并传播到客户端(《#14》问题[14]

弃用

  • 为了限制任务并发和减少作业调度语义的混乱,放弃使用aiojobs,转而使用原生的信号量(《#14》问题[14]

修复

  • 更新RPC层的稳定性:(《#14》问题[14]
    • 修复使用SEQ_BITS的错误消息序列计算,并阐明在调度程序中cleanup()cancel()方法的角色。
    • 现在默认使用退出顺序调度程序。

v0.9.5 (2020-05-12)

修复

  • lower.zeromq: 使用destroy()进行zmq上下文终止,以提高稳定性和干净地关闭打开的套接字(《#13》问题[13]

v0.9.4 (2020-04-10)

修复

  • 通过分离服务器/客户端消息序列ID来解决由于重叠的RPC消息序列ID导致的竞争条件 (#12)

其他

  • 采用towncrier进行变更日志管理 (#11)

v0.9.3 (2020-03-20)

  • 修复:缓解在RPC服务器中清理任务未来时导致的虚假KeyError,这导致了事件循环自旋。

v0.9.2 (2020-02-28)

  • 维护:更新依赖项,并且仅指定最小版本,因为Callosum是一个库。

v0.9.1 (2020-01-05)

  • 修复:RPCMessage.body字段的错误类型

  • 改进:为rpc.Peer添加debug_rpc选项,以便显式记录RPC调度器和用户定义处理程序中的异常。

  • 更新依赖项并删除未使用的项。

v0.9.0 (2019-12-06)

  • 第一个公共版本,基于ZeroMQ DEALER/ROUTER套接字的RPC。

2018-05-02

  • 开始项目。

项目详情


下载文件

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

源分发

callosum-1.0.3.tar.gz (42.2 kB 查看哈希值)

上传时间

构建分发

callosum-1.0.3-py3-none-any.whl (33.0 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面