Cloudflare Python Workers 正式可用:支持主流 Web 框架与 AI 编排

Cloudflare AI Bl8 小时前

Cloudflare 宣布 Python Workers 正式可用(GA)。Python 现已成为 Cloudflare 开发者平台上获得完整支持的一等语言,开发者可以在 Workers 运行时中使用熟悉的 Python 代码、库和开发模式。

这次更新的重点不仅是运行 Python,还包括平台服务绑定、Web 框架接入、数据库连接,以及 AI 应用所需的网络能力。

平台绑定:不再手写 JavaScript 胶水代码

Python Workers 现在原生支持 Cloudflare 开发者平台绑定,可与 Workers AI、R2、D1、Hyperdrive、Durable Objects、Queues 和 Workflows 等服务集成。

此前,在 Python 中调用这些绑定时,开发者需要在 RPC 边界显式处理 Python 对象与 TypeScript 对象之间的转换。例如,将 Python 字典发送到 Queue,就需要额外的转换代码。

现在,这套类型转换过程已封装进 Workers 运行时和 Python SDK。开发者可以使用更符合 Python 习惯的方式操作绑定,无须为此编写 JavaScript。

此外,Dynamic Workers 也支持在一个 Worker 内创建 Python Worker。

Web 框架:通过 ASGI、WSGI 接入

Python Workers 支持运行 FastAPI、Django 和 Flask 等框架,提供的连接器包括:

  • workers.asgi:用于接入 ASGI 应用,例如 FastAPI。
  • workers.wsgi:用于接入 WSGI 同步应用,例如 Django。

在传统部署中,通常由 Uvicorn 或 Gunicorn 等 Web 服务器处理连接与请求,再将应用逻辑交给框架。在 Python Workers 中,Workers 平台承担 Web 服务器的角色,应用不需要在 Worker 内另行运行这类服务器。

连接器负责将进入运行时的请求转换成 Python 应用预期的 ASGI 或 WSGI 结构,再将响应传回。其适用范围不限于上述三个框架,也包括其他遵循 ASGI 或 WSGI 接口的 Python Web 框架。

数据库:通过 Hyperdrive 连接 PostgreSQL 和 MySQL

Python Workers 现在可以结合 Hyperdrive 使用 PostgreSQL、MySQL 等关系型数据库。

过去的主要障碍是 TCP socket 支持不足。Python 数据库驱动通常依赖标准库的 socket 模块,而在 WebAssembly 沙箱中,相关的 POSIX 网络系统调用通常只是无法实际工作的占位实现。

为解决这一问题,Cloudflare 基于 Workers 的 connect API 实现了 socket 系统调用桥接,将建立连接、读取字节等 Python socket 操作转换为 Workers 运行时对应的调用。由于转换发生在系统调用层,数据库驱动不必感知底层实现。

使用时,需要先将数据库接入 Hyperdrive,并在 Wrangler 配置中设置绑定,再通过受支持的 Python 数据库驱动连接。具体驱动和包的兼容范围仍需逐项确认,不能将这一能力理解为所有数据库驱动都已可用。

包生态:原生扩展仍需编译为 WebAssembly

Python Workers 基于 Pyodide,在 WebAssembly 沙箱中运行 Python。因此,包含 C、C++ 或 Rust 原生扩展的包,需要交叉编译为 WebAssembly,不能直接照搬普通服务器环境中的二进制安装包。

为扩大可用包的范围,Cloudflare 推动了以下工作:

  • 提出并推动 PEP 783 获得接受,标准化名为 PyEmscripten 的 Python 运行平台。
  • 稳定并改进 Pyodide 构建工具链,便于包维护者构建适配 PyEmscripten 的软件包。
  • 为 cibuildwheel 增加 PyEmscripten 平台支持,降低维护者接入的门槛。

这些工作面向的不只是 Python Workers,也包括实现 PyEmscripten 的其他环境。不过,生态仍在逐步适配,GA 并不意味着所有 Python 包都已兼容。

AI 应用:改善 HTTP 客户端与编排库兼容性

AI 编排库通常需要通过 HTTP 客户端访问外部接口。过去,Python Workers 底层网络操作支持不足,影响了 requests、httpx 等客户端的使用,也限制了依赖这些客户端的上层库。

此次改进包括向上游贡献支持,使 HTTP 客户端能够在 WebAssembly 环境中通过 JavaScript fetch API 发出请求;结合新增的底层 socket 能力,Python Workers 的网络兼容性得到扩展。

由此,openai、langchain 和 mcp 等库可以在 Python Workers 中运行。开发者还可以将其与 Workers AI 结合,使用 Cloudflare 网络中的 GPU 无服务器推理,或通过 AI Gateway 代理请求。

部署前应关注什么

对于计划迁移或新建应用的开发者,重点是区分“框架能够接入”与“整个应用依赖已经兼容”:

  • Web 应用需要确认采用 ASGI 还是 WSGI 接口,并使用对应连接器。
  • 数据库访问需要确认 Hyperdrive 配置及驱动支持情况。
  • 含原生扩展的依赖,需要确认是否已有适配 WebAssembly 的构建。
  • AI 应用需要核对所用库及其网络依赖的兼容性。

Python Workers 的正式可用扩展了 Python 在 Workers 平台上的应用范围,但具体项目能否顺利部署,仍取决于依赖包、数据库驱动和运行时接口的实际支持情况。

评论

请登录后发表观点

暂无数据