Cloudflare Python Workers 现已正式发布(来源)。经过两年的预览,Cloudflare 在其服务端 Workers 平台上运行 Python 代码的支持如今已稳定:“Python 现已成为 Cloudflare 开发者平台上的一等公民,获得完整支持”。
其中一个有意思的地方在于它的工作方式。Cloudflare 是通过 Pyodide,在其基于 V8 的 workerd 运行时中运行编译为 WebAssembly 的 Python。
这也带来了一些限制,相关文档在此,其中最值得注意的是 multiprocessing 和 threading 在 WebAssembly 虚拟机中都无法使用。
其中一个特别有趣的细节是本地开发环境:他们的 pywrangler 开发工具(在 PyPI 上令人困惑地以 workers-py 的名字发布)会对其技术栈进行完整的本地模拟,包括在一个 123MB 的 workerd 二进制文件中,通过 V8 里的 WebAssembly 用 Pyodide 执行代码,这个文件在我这里最终落在了 node_modules/@cloudflare/workerd-darwin-arm64/bin/workerd。
Python Workers 代表着 Cloudflare 对更广泛的 Python 生态的一项重大投入。发布公告署名为 Gyeongjae Choi、Dominik Picheta 和 Hood Chatham,其中 Gyeongjae 和 Hood 都是 Pyodide 的核心维护者。