Apache Pulsar PIP-155 深度解析:彻底移除 Python 2 支持,确立 Python 3 版本滚动支持策略
消息队列流处理后端微服务消息路由【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pu/pulsar点击查看免费下载PIP-155Proposal for Improvement 155是 Apache Pulsar 社区正式宣告放弃 Python 2 兼容性的设计提案Pulsar Python Client 与 Pulsar Functions 从此不再为 Python 2.7 构建产物、运行测试或分发 wheel 文件并确立仅支持最近 4 个 Python 主版本、从发布到 EOL 提供 5 年支持窗口的滚动支持策略。本文将围绕该提案完整展开先梳理 Python 2 退役的历史背景与 Pulsar 的支持现状再逐条解读目标、API 影响与三项具体变更最后结合当前仓库源码给出落地证据与迁移建议帮助你在升级 Python 依赖、构建 Pulsar 客户端或编写 Python Functions 时准确把握版本边界。背景Python 2 的退役与 Pulsar 的抉择Python 2.x 在多年前就已停止持续演进官方宣布其生命周期在 2020 年 1 月正式结束即 EOL。PIP-155 明确写道Python 2.x 已被弃用多年且官方 EOL 已过去约 2.5 年因此 Pulsar 社区认为已经到了必须为 Pulsar Python Client 与 Pulsar Functions 移除 Python 2.7 兼容性的时间点。按照 Python 社区的生命周期管理惯例在一个时间点上仍在支持期内的 Python 主版本通常为 4 个。PIP-155 提出时这 4 个版本依次是3.7、3.8、3.9 和 3.10。每个版本从正式发布到 EOL 约有5 年的支持周期。这一背景决定了 PIP-155 的核心立场不追求尽可能兼容更多旧版本而是跟随 Python 官方支持窗口保持客户端与 Functions 运行时始终运行在受支持的、可获得安全修复的 Python 版本之上。目标确立最近 4 个 Python 版本滚动支持策略PIP-155 提出的核心目标是Pulsar Python Client 与 Pulsar Functions仅支持最近 4 个 Python 发布版本提案当时即 3.7、3.8、3.9、3.10当一个 Python 版本达到 EOL 时Pulsar 也随之将其移除支持范围。例如当 3.7 达到生命周期终点后Pulsar 将同步停止对 3.7 的支持该策略同样适用于Pulsar 的 patch 版本发布对于已经废弃的 Python 版本patch 版本将不再提供对应的 Python wheel 文件。这意味着版本的下限是动态滚动的随着 Python 官方 EOL 时间表推进Pulsar 支持的最低 Python 版本会逐步抬升而不是长期停留在某个固定版本上。对于使用旧版 Python 的部署方需要按此节奏规划客户端与 Functions 运行时的升级窗口。API 影响零变更 解锁 Python 3 专属能力PIP-155 对 API 的评估结论是当前阶段没有任何 API 变更。也就是说移除 Python 2 支持不改变Pulsar Python Client 的公开 API 表面也不改变 Python Functions 的接口签名。从 Pulsar Python Client 迁移到 Python 3 的应用无需修改调用代码即可继续工作。但更重要的是隐含收益一旦不再需要兼容 Python 2.7Pulsar Python Client 库将被解放——它现在可以自由使用 Python 3 特有的语法与第三方库例如async/await原生协程语法dataclasses、f-string、类型注解等现代语言特性仅支持 Python 3 的依赖生态如新版grpcio、protobuf、fastavro等。从源码结构看Pulsar Functions 的 Python 实例入口 python_instance_main.py 已经以#!/usr/bin/env python3作为 shebang直接声明运行环境为 Python 3这正是运行时全面 Python 3 化的直接体现。三项具体变更从 CI 到交付物的全链路切换PIP-155 列出了落地本次策略的三项具体变更覆盖了测试 → 集成 → 交付三个环节1. CI 构建切换Python Client 库测试改用 Python 3 运行第一项变更是在 CI 中把 Pulsar Python Client 库的单元测试运行环境从 Python 2 切换为 Python 3。这保证所有客户端代码路径包括消息发送/接收、Schema、认证等都在受支持的 Python 3 解释器上被持续验证。2. 集成测试切换全面使用 Python 3第二项变更是将集成测试integration tests切换为 Python 3。集成测试覆盖的是客户端与真实 Broker/Proxy 集群的端到端交互切换到 Python 3 后可以确保真实使用场景而非仅单元级也完全运行在受支持版本之上。3. 停止构建与分发 Python 2.7 的 wheel 文件第三项变更也是最直接的交付物变化不再为 Python 2.7 构建 wheel 文件也不再在发布中分发它们。从 Pulsar 的 patch 版本开始pip install pulsar-client在 Python 2.7 环境中将无法再获取到对应版本的 wheel 包。这是移除支持在安装层面上的最终体现——旧环境将无法通过常规 pip 途径安装新版本客户端。仓库中的落地证据PIP-155 之后的真实状态当前仓库中 Python 相关的代码与脚本已完全呈现 Python 3 化的状态可作为 PIP-155 落地的直接佐证Functions Python 实例入口python_instance_main.py 第一行为#!/usr/bin/env python3其内部使用argparse、asyncio等 Python 3 生态能力且直接import pulsar、Function_pb2、grpc相关模块构成完整的 Python Functions 运行栈Python 实例测试脚本run_python_instance_tests.sh 中通过PYTHON_BIN${PYTHON_BIN:-python3}显式默认使用python3运行测试并安装pulsar-client[all]、grpcio、protobuf等 Python 3 依赖脚本注释还说明测试依赖版本需与 docker/pulsar/Dockerfile 中生产环境安装的版本保持一致Python 实例测试用例pulsar-functions/instance/src/test/python 目录下的test_python_instance.py、test_python_instance_main.py、test_secretsprovider.py等模块均由python3 -m unittest驱动验证上下文实现、实例主流程与 Secret Provider 行为Python Client 代码仓库迁移仓库内的 pulsar-client-cpp/python/README.md 注明 Apache Pulsar Python Client 代码已迁移至独立的apache/pulsar-client-python仓库其版本管理与 Python 3 支持策略在独立仓库中持续演进。从这些文件可以确认PIP-155 并非停留在提案层面仓库中的 CI 脚本、运行时入口与测试基础设施均已按仅 Python 3执行。对开发者的影响与升级建议基于 PIP-155 的策略建议如下安排检查运行环境确保你的 Python 环境满足最近 4 个受支持版本要求。以提案当时为例为 3.73.10随着时间推移最低支持版本会随 Python 官方 EOL 滚动抬升请以 Pulsar 各版本发布的兼容性说明为准升级 Python 客户端依赖在受支持版本上使用pip install pulsar-client避免在已废弃的 Python 版本上继续安装新 patch 版本该版本将不再提供对应 wheel迁移 Python Functions 运行时Pulsar Functions 的 Python 实例以python3为入口见 python_instance_main.py部署 Functions 的镜像与进程需使用受支持的 Python 3 解释器及配套依赖无需改动 API 调用代码由于 PIP-155 明确无 API 变更已有基于 Pulsar Python Client 编写的生产者、消费者与 Functions 代码在切换到受支持 Python 3 环境后可直接运行仅需在新语法/新依赖引入后保持测试覆盖CI 已切换为 Python 3见 run_python_instance_tests.sh。总结PIP-155 为 Apache Pulsar 的 Python 生态划定了清晰的生命周期边界不再为已 EOL 的 Python 2 承担兼容成本转而采用最近 4 个 Python 版本、5 年支持窗口的滚动策略。三项落地变更CI 用 Python 3 测试、集成测试切换 Python 3、停止分发 Python 2.7 wheel使该策略完整覆盖了从开发验证到最终交付的每个环节而仓库中#!/usr/bin/env python3的实例入口与默认python3的测试脚本则是最直接的执行证据。对于 Pulsar 的 Python 使用者这条策略意味着更现代的语法与库、更健康的安全支持面以及一个可预期的升级节奏。赞分享消息队列流处理后端微服务消息路由【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pu/pulsar点击查看免费下载相关推荐Apache Airflow 支持版本全解析版本生命周期、Python/Kubernetes 支持策略与 EOL 管理Apache Airflow 支持版本全解析版本生命周期、Python/Kubernetes 支持策略与 EOL 管理 Apache Airflow 是一套用后端任务调度工作流自动化数据编排批处理数据工程流程编排OpenAI Python SDK 的 Python 版本支持策略深度解析从 requires-python 到月度自动化审查OpenAI Python SDK 的 Python 版本支持策略深度解析从 requires python 到月度自动化审查 OpenAI Python S人工智能大模型labelme 平台支持策略解析基于 SPEC 0 的 Python 支持窗口与 3.12 版本底线labelme 平台支持策略解析基于 SPEC 0 的 Python 支持窗口与 3.12 版本底线 labelme 作为一款基于 Python 与 Qt 的数据标注计算机视觉桌面应用上一篇Gentle-AI 的 review-refuter 审查驳斥者契约事务级只读取证与推理型严重发现的对抗验证机制下一篇ExtFUSE内核模块开发如何编写高效的eBPF处理程序创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

TagTinker如何无线同步图像到Flipper?浏览器BLE串口图像传输完全指南

TagTinker如何无线同步图像到Flipper?浏览器BLE串口图像传输完全指南

TagTinker如何无线同步图像到Flipper?浏览器BLE串口图像传输完全指南 【免费下载链接】TagTinker Flipper Zero app for ESL research using IR. All based on https://www.furrtek.org/?aesl 项目地址: https://gitcode.com/gh_mirrors/ta/TagTinker TagTi…

2026/10/9 5:07:14 阅读更多 →
从选题到投稿的17周路线图:academic-ai-prompt全流程科研实战,节省40-60%时间

从选题到投稿的17周路线图:academic-ai-prompt全流程科研实战,节省40-60%时间

从选题到投稿的17周路线图:academic-ai-prompt全流程科研实战,节省40-60%时间 【免费下载链接】academic-ai-prompt 一套为研究生和学术研究者设计的完整AI Prompt库 📖 包含内容: ✨ 40 精心设计的AI Prompt ✨ 论文选题系统方法…

2026/10/9 5:07:14 阅读更多 →
AlgoNote 题解:LeetCode 0424「替换后的最长重复字符」——不定长滑动窗口 + 频数统计的经典实战

AlgoNote 题解:LeetCode 0424「替换后的最长重复字符」——不定长滑动窗口 + 频数统计的经典实战

教程文档知识库 【免费下载链接】AlgoNote ⛽️「算法通关手册」:从零开始的「算法与数据结构」学习教程,200 道「算法面试热门题目」,1000 道「LeetCode 题目解析」,持续更新中! 项目地址: https://gitcod…

2026/10/9 5:06:14 阅读更多 →

最新新闻

学Simulink——基于反电动势过零检测的直流无刷电机(BLDC)无感控制仿真

学Simulink——基于反电动势过零检测的直流无刷电机(BLDC)无感控制仿真

目录 手把手教你学Simulink——基于反电动势过零检测的直流无刷电机(BLDC)无感控制仿真 一、 引言:当“霍尔传感器”成为过去式——反电动势过零检测如何成就真正的“无感”BLDC? 二、 问题本质:反电动势过零的“物理机制”与“协同逻辑” 1. 核心物理机制 2. 协同逻辑…

2026/10/9 5:35:40 阅读更多 →
Agent执行错操作怎么办——从权限确认、沙箱隔离到幂等回滚的安全执行实战

Agent执行错操作怎么办——从权限确认、沙箱隔离到幂等回滚的安全执行实战

Agent 安全执行不是“多弹确认框”,而是把权限、隔离、验证与恢复做成一条系统闭环。 AI Agent | 智能体安全 | 权限控制 | Human-in-the-Loop | 沙箱隔离 | 最小权限 | 幂等性 | 回滚机制 | Guardrails | MCP安全 当 Agent 从“给建议”升级到“真正执行动作”,系统…

2026/10/9 5:35:40 阅读更多 →
多Agent成本失控实战——并发、上下文与Token预算如何系统治理 从“Agent越多越强”到“每一美元都能解释”

多Agent成本失控实战——并发、上下文与Token预算如何系统治理 从“Agent越多越强”到“每一美元都能解释”

多Agent成本失控实战——并发、上下文与Token预算如何系统治理从“Agent越多越强”到“每一美元都能解释”#多Agent #Agent #LLM #Token #成本优化 #上下文工程 #Prompt Caching #并发控制 #模型路由 #可观测性多Agent系统真正昂贵的地方,往往不是…

2026/10/9 5:35:40 阅读更多 →
context-mode:基于上下文感知的终端环境自动切换

context-mode:基于上下文感知的终端环境自动切换

1. 为什么需要 context-mode:从手动切换走向规则切换1.1 配置切换的痛点,可能只有折腾过的人才懂每天要在三四种工作场景里来回切换:白天在项目仓库里写业务代码,下午翻开几个开源项目的源码做研究,晚上可能还要写自己…

2026/10/9 5:35:40 阅读更多 →
Meson 0.53.0 新特性深度解析:fs 模块、动态链接器选择与构建配置摘要实战

Meson 0.53.0 新特性深度解析:fs 模块、动态链接器选择与构建配置摘要实战

构建工具 【免费下载链接】meson The Meson Build System 项目地址: https://gitcode.com/gh_mirrors/me/meson 点击查看 免费下载 本篇文章以 Meson 0.53.0 官方发布说明(Release-notes-for-0.53.0.md)为主体,逐项解析该版本引入…

2026/10/9 5:35:40 阅读更多 →
HARA与风险评估方法

HARA与风险评估方法

EPS electronic power steering, 电子助力转向系统 发现了问题,下面就要制定措施 内容来源 : https://www.bilibili.com/video/BV1GdeQ6xEHi?spm_id_from333.788.videopod.sections&vd_source473185c2a7a9b79ef8fcea7dce5ca501

2026/10/9 5:34:40 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →