两年前,Cloudflare 推出 Python Workers,旨在让 Python 应用在 Workers 运行时中的开发体验媲美 TypeScript,并实现 Python 包和框架生态系统的“开箱即用”。今日,Python Workers 正式宣布全面可用(GA)。

GA 标志着 Python 已成为 Cloudflare 开发者平台上的第一等公民。开发者可直接使用熟悉的 Python 代码、库和设计模式,无缝集成 Workers AI、R2、D1、Hyperdrive、Durable Objects、Queues 及 Workflows 等平台服务。同时,Python Workers 支持在内部运行 FastAPI、Django 和 Flask 等主流框架,甚至可通过动态 Workers(Dynamic Workers)在其他 Worker 内创建 Python Worker。

从实验到生产就绪

基于 Workers 自 2018 年起对 WebAssembly 的支持,Cloudflare 利用 Pyodide 迅速实现了 Python 解释器的运行。经过多年迭代,Python Workers 已从早期实验阶段走向生产就绪,旨在打造首个无限扩展且保持高性能易用性的 Python 应用平台。

原生绑定:告别 JavaScript 胶水代码

此前,在 Python Workers 中使用 Cloudflare 绑定需在 RPC 边界将 Python 对象显式转换为 TypeScript 对象,例如发送数据到 Queue 需编写复杂的转换代码。这不仅增加了开发负担,也是常见的错误来源。

现在,Cloudflare 将类型转换过程封装在 Workers 运行时和 Python SDK 中。开发者可直接以 Pythonic 方式调用所有 Cloudflare 绑定,无需编写任何 JavaScript 代码。例如,发送数据至 Queue 仅需一行代码:

self.env.QUEUE.send({"key": "value"})

全面支持主流 Web 框架

通过内置连接器,开发者可在 Python Workers 中运行 FastAPI、Django、Flask 等框架构建 API 服务器。Workers 平台本身充当 Web 服务器,负责负载均衡和无限扩展,而 workers.asgiworkers.wsgi 连接器则作为优化桥梁,将原生 JavaScript 请求转换为标准的 WSGI/ASGI 结构,实现最小开销的请求处理。

以 FastAPI 为例,只需添加少量代码即可接入:

from workers import asgiclass Default(WorkerEntrypoint):    async def fetch(self, request):        return await asgi.fetch(app, request, self.env)

Django 等同步框架也可通过 workers.wsgi 轻松部署。该机制适用于任何遵循 WSGI 或 ASGI 标准的 Python Web 框架。

Hyperdrive 集成:打通关系型数据库

针对 PostgreSQL 和 MySQL 等关系型数据库,Python Workers 现已支持 Hyperdrive 集成。此前,由于 WebAssembly 沙箱内 POSIX 网络系统调用受限,依赖 socket 模块的数据库驱动程序无法正常工作。

Cloudflare 通过 Workers 的 connect API 实现了自定义套接字系统调用,将 Python 套接字操作透明转换为 JavaScript 调用。这使得开发者可使用熟悉的驱动程序(如 aiomysqlasyncpg)直接连接 Hyperdrive,无需修改底层逻辑。

扩展 WASM 包生态系统:PEP 783

为解决带有原生扩展的 Python 包在 WebAssembly 中的兼容性问题,Cloudflare 提出并推动了 PEP 783 标准的通过。该提案确立了 PyEmscripten 平台,标准化了 Python 在浏览器及 WASM 环境中的运行方式。

Cloudflare 还稳定了 Pyodide 构建工具链,并在 cibuildwheel 中添加 PyEmscripten 支持,助力包维护者轻松构建兼容 WASM 的 wheel 包。未来,Cloudflare 期望每个 Python 包都能提供适用于 WebAssembly 的版本,并与主要包维护者合作推进这一进程。

原生支持 AI 智能体与管道

借助对低级套接字操作的支持及 HTTP 客户端的上游贡献,openailangchainmcp 等 AI 库现可在 Python Workers 中原生运行。这些库的 HTTP 请求可直接通过 JavaScript fetch API 路由,结合 Workers AI 的无服务器 GPU 推理能力,开发者可高效构建 AI 智能体和管道。

示例展示了如何使用 langchain-cloudflare 调用 Workers AI 模型:

from langchain_cloudflare import ChatCloudflareWorkersAIfrom langchain_core.prompts import PromptTemplateclass Default(WorkerEntrypoint):    async def fetch(self, request):        llm = ChatCloudflareWorkersAI(            model_name="@cf/meta/llama-3.3-70b-instruct-fp8-fast",            binding=self.env.AI        )        result = await llm.ainvoke("Describe a great day.")        return Response.json({"result": result})

实战示例与文档更新

Cloudflare 已在 python-workers-examples 仓库中提供多种生产就绪模式,包括:

  • 异步 AI 编排:结合 Queue、Workflows 和 R2 构建 AI 图像生成器。
  • 实时流处理:利用 Durable Objects 维持 WebSocket 连接,处理 Bluesky Jetstream 实时事件。
  • MCP 服务器:部署模型上下文协议服务器,赋能 AI 助手访问边缘数据。
  • RAG 系统:整合 Workers AI 与 Vectorize 向量数据库构建检索增强生成应用。

此外,Cloudflare 开发者文档已全面更新,几乎所有 TypeScript 代码示例均配备了对应的 Python 版本,支持在文档中一键切换语言视图。

展望未来

GA 仅是起点。Cloudflare 计划持续提升 Python Workers 的性能与内存效率,并进一步扩大包支持范围。开发者可查看官方文档,立即开始构建基于 Python 的 Serverless 应用。