网易首页 > 网易号 > 正文 申请入驻

Cloudflare 正式发布 Python Workers,但关于冷启动和上游维护的问题仍待解答

0
分享至


作者 | Steef-Jan Wiggers

译者 | 平川

Cloudflare 最近 正式推出 了 Python Workers,距离 首个预览版 发布已经过去两年。如今,Python 已经与 JavaScript 和 TypeScript 一起成为开发者平台的重要组成部分。它提供了与 Workers AI、R2、D1、Hyperdrive、Durable Objects、Queues 和 Workflows 的绑定,并且支持 FastAPI、Django 和 Flask。

有三项工程成果促成了这次正式发布,其中两项来自 Cloudflare 之外。

首先是一个打包标准。Python Workers 在 Pyodide 上运行,因此,任何带有 C、C++ 或 Rust 扩展的包都必须交叉编译为 WebAssembly,而之前没有标准的方法来实现这一点。Cloudflare 曾经自行编译并托管这些包,但这限制了可用包的数量。该公司提出了 PEP 783,旨在为浏览器内的 Python 运行时平台 PyEmscripten 制定标准。该提案在一年多后获得通过。Cloudflare 还加固了 Pyodide 构建工具链,并在 cibuildwheel 中添加了对 PyEmscripten 的支持,从而使维护者能够构建自己的 wheel 包。

第二项是套接字桥接。aiomysql 和 asyncpg 等驱动程序使用了标准库中的 socket 模块。该模块会发起 POSIX 系统调用,而这些调用在 WebAssembly 沙箱中只是桩函数。Cloudflare 通过 Workers 的 connect API 实现了这些调用。转换是在系统调用层进行的,因此,驱动程序无需做任何修改,这也正是 Hyperdrive 集成能够正常运行的原因。

第三项是针对 HTTP 客户端的上游贡献。现在,包括 requests 和 httpx 在内的库会在 WebAssembly 环境中通过 JavaScript 的 fetch API 进行路由,这使得 OpenAI、LangChain 和 MCP 均能够在 Worker 中运行。

绑定本身也变得更具 Python 风格了。此前,将字典发送到队列需要通过 to_js 并使用 dict 转换器进行转换;现在,类型转换在运行时和 SDK 内部完成。Web 框架通过连接器而非服务器实现,workers.asgi 和 workers.wsgi 会将传入的 JavaScript 请求转换为 WSGI 和 ASGI 应用程序所期望的结构,其理由是该平台本身就是 Web 服务器。

社区对此的反应两极分化,争议焦点与其说是这些新特性本身,不如说是它们背后的实现机制。

第三项引发的反响最激烈。作为 urllib3 的维护者,illia-v 在 Hacker News 上发文解释道,他的项目合并了多项重大的贡献,包括添加对 Pyodide 和 Emscripten 的支持,以及后来的 JSPI 支持。正是这些贡献使该功能得以在 requests 中实现。他指出,资金流向了实现该功能的贡献者,而非最终负责维护该项目的维护者:

资助项目的上游贡献与资助上游维护者之间存在着本质性的区别。

其影响在 urllib3 自身的立场中有所体现。在该项目中,Emscripten 后端仍然处于实验阶段,而且被明确排除在项目的安全策略之外。他指出了 CVE-2025-50182 这一漏洞——当请求通过 fetch 进行路由时,urllib3 的重定向控制机制未能按预期发挥作用——并提醒说,可能还存在其他不少此类的差异,因为浏览器的网络语义与常规的 urllib3 后端有所不同。

冷启动引发的是数据层面的关注,而非用户的抱怨。Wasmer(一家销售竞争性 WebAssembly 平台的公司)创始人 Syrus Akbary 重提了他在最初发布其产品时提出的担忧:

以他们目前的架构,要实现 <100ms 的启动时间将相当困难。

他表示,根据该公司今年早些时候发布的一项基准测试,在 Wasmer Edge 上,一个最简单的 Python 应用程序的启动时间约为 60 毫秒,而在 Cloudflare Workers 上则约为 900 毫秒,并询问了当前使用和不使用原生包时的 p50 和 p95 数据。

该博文的作者之一 Dominik Picheta 代表 Cloudflare 方面回答道:

我们的内存快照实现已经显著改善了冷启动性能。

他补充道,分片技术可以减少冷启动的发生频率,并提到了之前一篇包含 具体数据 的文章。Akbary 在后续评论中指出,这篇文章中报道的启动时间约为 1.027 秒,并问在那之后是否重新测量过。

Akbary 提出的另一项异议是关于版本耦合,即受限于 workerd 所嵌入的 Python 和 Pyodide 版本。Picheta 回答说,兼容性标志 可以是 Python 3.12、3.13 或 3.14,同时指出,旧版本对应的是功能更少的 Pyodide 旧版本,JSPI 也不在其中。Akbary 认为这证实了该问题,因为该标志也会影响 workerd。

评论者 dangoodmanUT 单独提出了一个与内存相关的担忧,但他尚未对此进行测试:

这可能会使工作进程的内存分配增加数十 MB。

讨论解决的是技术问题,而非商业问题。Akbary 认为,通过打补丁让 Python 的事件循环使用 JavaScript 循环会导致不兼容,因为两者在协程的执行时机上存在差异。该博文的另一位作者、Pyodide 贡献者 Hood Chatham 回复道:

使用 WebLoop 时,Python 协程仍然保持惰性。

他补充道,Python 事件循环所需的基本函数是 call_later,它与 setTimeout 完美对应;而必须使用 JavaScript 循环,是因为运行时中的 I/O 事件是在那里发生的。如果再添加一个循环,就会阻塞这些事件。

同一条讨论帖中还包含了能回应“资金支持不足”这类批评的说明。Simon Willison 建议 Cloudflare 向 Pyodide 提供资金支持。Picheta 指出,另一位作者 Gyeongjae Choi 是 Pyodide 的核心开发者,而 Chatham 则是 Cloudflare 聘请的 Pyodide 贡献者。公告中提到的三人中有两人负责维护该运行时所依赖的项目。

如果这些反响具有代表性,那么 GA 标签带来的影响可能不如其背后的工程实现那么显著。该打包标准消除了对单一供应商编译 wheel 包的依赖,而系统调用桥接机制则使得现有的驱动程序无需修改即可正常工作。目前尚待明确的是,未来将由谁来维护上游组件,以及运行时在启动时和内存占用方面的开销究竟如何。

Cloudflare 已经在 python-workers-examples 仓库中发布了产环境应用模式,从其开发文档中现在也已经可以看出,Python 已经与 JavaScript 和 TypeScript 一起出现在各产品中。关于性能,该公司仅表示计划提高 Python Workers 的性能并优化其内存效率。

https://www.infoq.com/news/2026/09/cloudflare-python-workers-ga/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
媒体的坏与小鹏的蠢

媒体的坏与小鹏的蠢

观人随笔
2026-10-27 13:21:21
哪个行业悄悄好起来了?就是硬捂着,不让别人知道的那种?

哪个行业悄悄好起来了?就是硬捂着,不让别人知道的那种?

夜深爱杂谈
2026-10-25 19:31:49
关于台湾问题,特朗普突然放狠话,赖清德急了,郑丽文说出真心话

关于台湾问题,特朗普突然放狠话,赖清德急了,郑丽文说出真心话

兵卒史
2026-10-27 18:38:30
奥巴马公开表示:白宫修得像萨达姆开的连锁餐厅;特朗普称:奥巴马根本就不懂,他说白宫像连锁餐厅只能说明他做总统时有多糟糕

奥巴马公开表示:白宫修得像萨达姆开的连锁餐厅;特朗普称:奥巴马根本就不懂,他说白宫像连锁餐厅只能说明他做总统时有多糟糕

吉刻新闻
2026-10-27 13:44:12
网传女孩抑郁症,结三次婚,每次不到半年就离,彩礼不退,已经攒了几十万,光金手镯就有仨

网传女孩抑郁症,结三次婚,每次不到半年就离,彩礼不退,已经攒了几十万,光金手镯就有仨

丫头舫
2026-10-26 23:07:52
法国总统候选人勒庞公开表示:若我成功执政,将组建多元化民族团结政府,将法国打造成和平之国,不会将法国年轻人送上与法国无关的战场

法国总统候选人勒庞公开表示:若我成功执政,将组建多元化民族团结政府,将法国打造成和平之国,不会将法国年轻人送上与法国无关的战场

吉刻新闻
2026-10-26 08:13:21
15岁高中生确诊甲状腺癌,且已转移!家长:孩子从初中开始,就没在凌晨一点前睡过觉;医生:不能因其被称为“懒癌”而掉以轻心

15岁高中生确诊甲状腺癌,且已转移!家长:孩子从初中开始,就没在凌晨一点前睡过觉;医生:不能因其被称为“懒癌”而掉以轻心

南方都市报
2026-10-25 18:40:27
挺好的训练装,硬是穿出不协调的感觉!

挺好的训练装,硬是穿出不协调的感觉!

穿的像个人样
2026-10-15 07:52:49
钱壮飞长征中离奇死亡,金沙县五十年后揭示真相:他被人用毒害死了!

钱壮飞长征中离奇死亡,金沙县五十年后揭示真相:他被人用毒害死了!

海佑讲史
2026-10-27 10:55:16
令人愤怒的“卖1元火鸡面”视频,炸出了多少被毁掉的中国小孩

令人愤怒的“卖1元火鸡面”视频,炸出了多少被毁掉的中国小孩

小椰子专栏
2026-10-26 13:02:17
4名乘客现场死亡,银昆高速交通事故报告披露:货车司机开车吸烟、浏览并操作手机,未及时发现违停面包车,与其尾部相撞,引发致命惨剧

4名乘客现场死亡,银昆高速交通事故报告披露:货车司机开车吸烟、浏览并操作手机,未及时发现违停面包车,与其尾部相撞,引发致命惨剧

南方都市报
2026-10-27 14:22:57
火箭对阵雄鹿前瞻 重建的雄鹿能为火箭带来什么威胁 乌度卡会如何应对

火箭对阵雄鹿前瞻 重建的雄鹿能为火箭带来什么威胁 乌度卡会如何应对

大话火箭队
2026-10-27 17:54:38
新加坡从2029年起将法定退休年龄提至65岁 ,再就业年龄提高至70岁:对于到达法定退休年龄和再就业年龄后,仍继续工作者,将配套减轻税负

新加坡从2029年起将法定退休年龄提至65岁 ,再就业年龄提高至70岁:对于到达法定退休年龄和再就业年龄后,仍继续工作者,将配套减轻税负

大风新闻
2026-10-27 10:34:01
1、日本发动机,寿命约55万公里;2、德国发动机,寿命约35万公里;

1、日本发动机,寿命约55万公里;2、德国发动机,寿命约35万公里;

回京历史梦
2026-10-21 09:44:43
日本一女团候选生体重132kg!身高只有148cm,自嘲“没有膝盖”,凭一张舞台照爆火出圈…

日本一女团候选生体重132kg!身高只有148cm,自嘲“没有膝盖”,凭一张舞台照爆火出圈…

东京新青年
2026-10-27 19:26:54
火箭队双控卫首发,获申京公开感谢!轰29+9+9+6断,体能已无短板

火箭队双控卫首发,获申京公开感谢!轰29+9+9+6断,体能已无短板

熊哥爱篮球
2026-10-27 19:47:43
iPod 发布 25 周年,苹果如何改变世界?

iPod 发布 25 周年,苹果如何改变世界?

哎咆
2026-10-26 18:22:16
陈凯歌饭局上,一群年轻演员排着队弯腰敬酒,陈飞宇站旁边给倒酒

陈凯歌饭局上,一群年轻演员排着队弯腰敬酒,陈飞宇站旁边给倒酒

西楼知趣杂谈
2026-10-20 20:22:01
明年将会是中华人民共和国全党、全军、全国各族人民重要的一年

明年将会是中华人民共和国全党、全军、全国各族人民重要的一年

梦史
2026-10-26 10:55:36
伴娘怂恿要15万下车费,新郎取钱后一去不回,新娘回到娘家后破防了

伴娘怂恿要15万下车费,新郎取钱后一去不回,新娘回到娘家后破防了

悬案解密档案
2025-08-05 16:21:15
2026-10-27 20:07:00
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
13128文章数 52130关注度
往期回顾 全部

科技要闻

Anthropic最硬气招股书,先把丑话说在前头

头条要闻

家长月均花约3000元住酒店陪读:综合下来比租房划算

头条要闻

家长月均花约3000元住酒店陪读:综合下来比租房划算

体育要闻

世界上最无趣的前锋,拿下了金球奖

娱乐要闻

芒果遇到厉娜和许飞笑发财了!

财经要闻

韩国芯片出口额可能下降高达1000亿美元

汽车要闻

纯电续航1003km 大五座SUV腾势N8正式开启预订

态度原创

健康
数码
亲子
公开课
军事航空

查不出猝死风险?可能是项目没做对

数码要闻

为避免在韩国市场引发争议,苹果悄悄移除当地官网iPad mini(A20 Pro)海报中的手部

亲子要闻

宝宝喊爸爸时声音短促响亮,喊妈妈时声音变得软糯,网友:这谁听了不心软啊

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

伊总统佩泽希齐扬抵达莫斯科 俄仪仗队列队迎接

无障碍浏览 进入关怀版