PyZMQ:Python 分布式消息通信的轻量级方案

pyzmq 在 GitHub 上拿到了 4,142 个 Star。

ZeroMQ 是一套轻量级分布式消息库,pyzmq 是它的 Python 绑定。不需要消息代理、不用起中间件服务,几行代码就能让不同进程、不同机器上的组件互相收发消息。

正文顶部截图

1、PyZMQ 解决了什么

分布式系统里,组件间通信一直是个麻烦事。HTTP 请求太重,gRPC 要写 proto 文件,各类 MQ 中间件又要独立部署和维护。

PyZMQ 走的是另一条路。它基于 ZeroMQ 的套接字抽象,把 TCP 通信封装成接近原生 socket 的接口,同时内置了请求响应、发布订阅、推拉队列、路由器代理这些通信模式。你不用起任何服务端进程,代码里创建 socket 就能直接收发消息。

2、版本和平台支持

PyZMQ 完整支持 libzmq 3.x 和 4.x 的稳定 API,社区版(非 DRAFT)功能全覆盖。直接编译对接最新的 libzmq 即可,不用改代码,不用传编译标志。

Python 方面,支持 3.9 及以上版本,PyPy 也能跑。底层通过 Cython 做 C 扩展绑定,兼顾了开发效率和运行时性能。

README区域截图

3、安装方式

最简单的方式:

pip install pyzmq

macOS、Windows、Linux 三个平台都提供了预编译 wheel 包,pip 会自动匹配。如果你机器上已经装好了 libzmq 并且想用自己的配置版本,可以强制从源码编译:

pip install --no-binary=pyzmq pyzmq

从 GitHub 仓库直接构建的话,需要安装较新版本的 Cython。

4、版本兼容策略

PyZMQ 16 之后不再支持 Python 2.6 和 3.2。如果还在用这些旧版本,锁死 pyzmq<16 就行。

libzmq 2.0.x 用户需要 pyzmq<2.1。PyZMQ 13.0 引入了基于 CFFI 的 PyPy 支持,也是从这一版开始采用语义化版本号,不再跟随 libzmq 的版本号。

5、适合哪些场景

写 Python 微服务,需要在服务间做高性能异步消息通信,不想引入 Redis、RabbitMQ、Kafka 这类额外中间件的团队,PyZMQ 是一个值得考虑的选项。发布订阅、推拉队列、请求响应这些模式开箱即用,文档齐全,PyPI 上稳定迭代多年,社区活跃度不低。

订阅、推拉队列、请求响应这些模式开箱即用,文档齐全,PyPI 上稳定迭代多年,社区活跃度不低。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐