Cloudflare Workers 正式支持 Python:我的 VPS 又能少一台了

本文要点

问题一句话答案
发生了什么?Python Workers 于 2026-09-21 正式 GA,Python 成为 Workers 平台一等公民语言
免费能用吗?能。Free 计划每天 10 万次请求,Paid 计划 $5/月起
和 JS Worker 价格一样吗?一样,没有「Python 附加费」,共用同一套计费
打包限制变了吗?变了,而且是放宽:压缩包 3MB/10MB 上限取消,改为统一 64MiB(未压缩)
我该把 VPS 上的 Python 服务迁过去吗?API、webhook、AI 编排类:值得迁;多线程、常驻进程类:先不动

官方公告:Python Workers are now generally available(Cloudflare Blog,2026-09-21),官方文档:Write Cloudflare Workers in Python


一、这次更新到底更新了什么

背景:Python Workers 不是新东西,2024 年 4 月就开放了 beta,之后一直挂着 preview 的牌子。

这两年里我试过把 FastAPI 服务往上面搬,感受就是「能跑,但不好用」——最典型的是给 Queue 传个字典,得先手写一段 JS 胶水代码做类型转换:

# GA 之前:必须手写 FFI 转换
from pyodide.ffi import to_js
import js
self.env.QUEUE.send(to_js({"key": "value"}, dict_converter=js.Object.fromEntries))

# GA 之后:直接传
self.env.QUEUE.send({"key": "value"})

这次转正,核心变化我整理成一张表:

变化点GA 之前GA 之后
调用平台绑定(Queue/R2/D1 等)手写 to_js() 转换,人类和 AI agent 都容易在这里出错类型转换封装进运行时,纯 Python 直呼
Web 框架支持有限内置 workers.asgi / workers.wsgi 连接器,FastAPI、Django、Flask 加一行 entrypoint 即部署
数据库驱动socket 系统调用在 Wasm 沙箱里直接失败,MySQL/PostgreSQL 驱动全废socket 系统调用基于 Workers connect API 实现,aiomysqlasyncpg 可经 Hyperdrive 连库
openai / langchain / mcp因 HTTP 客户端依赖底层 socket 而无法运行上游已 patch 为走 fetch API,原生可用
打包上限压缩后 3MB(Free)/ 10MB(Paid)统一 64MiB(未压缩),两档计划一致(2026-09-04 生效)
平台定位实验性功能first-class,官方文档几乎每个 TS 示例都配了 Python 版

提示:ASGI/WSGI 连接器是这次最实用的部分。它意味着 uvicorn、gunicorn 这些 web server 的活儿由 Cloudflare 的全球网络接管,你的代码里只剩业务逻辑。以前自建 VPS 要操心的并发、负载均衡、反向代理,这里全部不用管。

有两个仍然存在的坑,是迁移前必须要知道的:

  • multiprocessingthreading 导入后没有实际功能。Wasm 沙箱跑不了真线程,靠多进程/多线程并发的代码(典型如爬虫、批量任务)得改成 async 写法。
  • C 扩展包依赖预编译版本。Cloudflare 主导的 PEP 783(PyEmscripten 平台目标)刚被接受,生态还在跟进,冷门的原生编译包可能没有 Wasm 构建,部署前先查 官方包支持列表

二、省钱账:一台 VPS 一个月到底花多少

说实话,这是我最关心的问题。以一台跑 FastAPI 小服务的最低配 VPS 为参照(价格为 2026 年市场常见档位,仅供量级参考):

成本项自建 VPSCloudflare Workers
计算费用轻量应用 VPS 约 $10–60/年(RackNerd 等年付款),国内轻量云约 ¥30–80/月Free:¥0;Paid:$5/月(约 ¥36)
请求数不限(但带宽另算)Free 每天 10 万次;Paid 每 100 万次请求 $0.30
运维时间成本系统补丁、SSL 证书续期、进程守护(systemd/supervisor)、被扫端口后的善后零。证书自动,部署一条 pywrangler deploy
冷启动无(进程常驻)有,Pyodide 解释器按需拉起,官方称 fast-booting
计费盲区CPU 时间:Free 每次调用限 10ms CPU;Paid 超出后每 100 万 CPU-ms 收 $0.02

结论很直白:轻量 API 类服务,Free 计划就能覆盖,一年省下的是一台 10–60 美元的 VPS 加上持续不断的运维。就算上 Paid 计划,5美元/月也和一台最低配 VPS 持平,换来的是免运维和全球边缘分布。

唯一的计费陷阱是 CPU 时间。Python 是解释执行,同样的逻辑跑在 Pyodide(Wasm 编译的 CPython)里,CPU 开销天然高于 V8 里的 JS。我建议的验证方法:迁一个服务上去跑一周,在 Dashboard 看 CPU Time per invocation 的 P50/P99,再决定是留下还是退回 VPS。

提示:甲骨文免费 ARM 那档「白嫖」用户对这类消息应该更有感触——免费资源配额是会缩水的(本站之前写过 4核24G 腰斩到 2核12G 的事),而 Workers 的 Free 档是商业产品的一部分,砍额度的动作至少会提前公告。

三、哪些场景值得迁,哪些先按住

场景迁移建议原因
FastAPI / Flask API 服务✅ 首选迁移对象ASGI/WSGI 连接器就是为这个准备的
Webhook 接收、回调处理✅ 强烈建议低频、突发流量,Free 档完全够,VPS 反而在空转
AI 应用编排(langchain / mcp / openai)✅ 官方示例齐全,起步成本低配合 Workers AI、Vectorize、R2 全链路一个平台搞定
MCP server✅ 值得试官方 examples 仓库有现成模板
多线程爬虫、定时批处理⚠️ 先不动threading/multiprocessing 无效,要重构成 async
常驻长连接(WebSocket 大量在线)⚠️ 看 CPU 账单Durable Objects 可做,但 CPU 计费模式要实测
依赖冷门 C 扩展的项目❌ 暂缓PyEmscripten 生态未铺开,包大概率装不上
数据库密集型应用⚠️ 谨慎D1 是 SQLite 血统,复杂关系查询是短板;要 Postgres 就配 Hyperdrive,链路多一跳

四、我的判断:这是独立开发者基础设施的分水岭

Cloudflare Workers 正式支持 Python

说三点看法:

第一,AI 胶水代码全面 serverless 化的门槛,这次真正降到了零。 世界上大部分 AI 周边代码是 Python 写的,以前要把它跑成线上服务,绕不开一台 VPS 或一套容器平台。现在一个 FastAPI 接请求、langchain 做编排、Workers AI 出推理、R2 存结果的完整 RAG 应用,纯 Python 写完直接 pywrangler deploy,中间没有一行 JavaScript,也不需要一台需要你打补丁的机器。

第二,VPS 的角色会继续收缩,但不会消失。 我的 VPS 上现在跑着 WordPress、定时任务和一些 Python 脚本,这次之后 Python 脚本这类最先迁走,WordPress 这种 PHP 常驻应用短期内没有对应方案(Cloudflare 自己也还在支持别的语言的路上)。VPS 从「什么都跑」收缩成「只跑必须常驻的东西」,这个趋势对个人站长是净收益——管理面越小,出事的概率越小。

第三,锁定成本要心里有数。 绑定体系(D1、R2、Queues)用得越深,迁移出去越难。我的做法是计算无状态化:业务逻辑放 Worker,数据要么放外部 Postgres(走 Hyperdrive),要么保证导出路径清晰(R2、D1 都支持导出)。这样哪天想换平台,搬的是数据而不是重写代码。

五、行动清单

如果你手上正好有跑着 Python 小服务的 VPS,这周末可以花两小时做完这几步:

  1. uvx --from workers-py pywrangler init 起一个模板项目,把现有 FastAPI 应用用 asgi.entrypoint(app) 挂上去;
  2. 本地 pywrangler dev 跑通后,先部署一个测试域名验证,别直接切生产流量;
  3. 查一遍依赖里的 C 扩展包,确认有 PyEmscripten 构建或用纯 Python 替代;
  4. 观察 CPU Time 指标一周,算清真实成本再决定去留。

一句话总结:这次转正把「独立开发者的 Python 服务」从一门运维手艺变成了一次部署命令,省下的不只是 VPS 的钱,还有盯着证书和补丁的注意力。


FAQ

Q:Cloudflare Workers 跑 Python 收费吗?

A:与 JavaScript Worker 同价,无附加费。Free 计划每天 10 万次请求;Paid 计划 $5/月起,含 10 百万次请求/月,超出部分每 100 万次 $0.30,CPU 时间超出后每 100 万 CPU-ms $0.02。

Q:Python Workers 支持哪些框架?

A:ASGI 框架(FastAPI、Starlette)用 workers.asgi,WSGI 框架(Django、Flask)用 workers.wsgi,只需一行 entrypoint 代码。

Q:以前 beta 时代包不能上生产,现在呢?

A:GA 后 PyPI 包可正常部署,前提是包有符合 PEP 783(PyEmscripten)的 Wasm 构建,纯 Python 包可直接使用。

Q:哪些 Python 功能在 Workers 上不可用?

A:multiprocessingthreading 导入后无实际功能;fcntltermiosvenvptytty 等模块被移除或导入失败。

Q:能把 Django 整站搬到 Workers 上吗?

A:代码层面可以(WSGI 连接器支持),但模板、静态文件、session 存储需要改用 R2/KV/D1 等绑定,且 admin 后台这类重数据库功能建议实测性能后再决定。

耕读君
耕读君

一个筋斗十万八千里,说明上云好啊

文章: 241

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注