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 查看哈希值)
关闭
callosum-1.0.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 381b62718accbc777c05eb8d6ae2fd98ab68fca2b5842de7ef94fdf7d8de5a38 |
|
MD5 | 1e93e88bd237bdddcd73d3fed2c085b9 |
|
BLAKE2b-256 | c687af504e56c3f43d73e22385fd9b05f3c63ac08885f3958ecd03443a17761f |
关闭
callosum-1.0.3-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2dd92ab8d86408df943510539f64d40844d755dc53799ed6a16b2312a77b9557 |
|
MD5 | b2f8f8b7ac76b439951bbab729e5b47b |
|
BLAKE2b-256 | d734be5c545880a3fb21c74a828dde06c9c281a8769902a4f1bed373816f772d |