過去兩年,想在 Cloudflare Workers 上寫 Python,最常遇到的不是語法問題,而是邊界問題:Python 物件要手動轉成 TypeScript 物件才能送進 Queue 之類的綁定,開發者得同時在腦中維護兩套執行環境。Cloudflare 在 2026 年 9 月 21 日宣布 Python Workers 正式 GA,把這個邊界收進 runtime 與 Python SDK 裡。
GA 之後,Python 不再需要「翻譯層」
根據 Cloudflare 的公告,Python 現在是 Cloudflare Developer Platform 的一級語言,原生支援平台綁定,開發者可以用 Python 的方式直接使用 Workers AI、R2、D1、Hyperdrive、Durable Objects、Queues、Workflows 等服務,不必再寫任何 JavaScript 膠水程式碼。Cloudflare 也直言,過去這種型別轉換是「人類與 AI agent 共同的錯誤來源」——這句話對正在讓 agent 自動產生 Worker 程式碼的團隊特別值得留意。
FastAPI、Django、Flask 直接跑,因為平台本身就是 web server
Cloudflare 提供 workers.asgi 與 workers.wsgi 兩個 connector,讓 FastAPI、Django、Flask 以及任何符合 ASGI 或 WSGI 介面的框架都能在 Python Workers 內執行。傳統部署要靠 Uvicorn、Gunicorn 這類 web server 處理並發連線與執行緒,但在 Workers 上,平台本身承擔了負載平衡與水平擴展,connector 只負責把進來的 JavaScript request 轉成框架預期的 WSGI/ASGI 結構,再把回應送出去。
這裡的取捨很明確:你換到的是不用自己管伺服器與擴展,代價是執行環境仍受 Workers runtime 的模型限制。
資料庫與 AI 套件:socket 層的補洞
Python Workers 過去不支援 TCP socket,導致 asyncpg、aiomysql 這類依賴標準函式庫 socket 模組的驅動程式無法使用,因為 WebAssembly 沙箱裡的 POSIX 網路 syscall 預設是會直接失敗的 stub。Cloudflare 的解法是用 Workers connect API 實作 socket syscall,在系統呼叫層把 Python 的開連線、讀位元組轉成 Workers runtime 的 JavaScript 呼叫,驅動程式本身不需要知道底層實作。這也讓 Hyperdrive 能接上 PostgreSQL 與 MySQL。
同樣的補洞也解開了 AI 生態:openai、langchain、mcp 這些套件依賴 requests 或 httpx 等 HTTP client,過去在 Python Workers 上無法正常運作。Cloudflare 向上游貢獻修改,讓這些 client 在 WebAssembly 環境中直接走 JavaScript fetch API,現在這些套件可以原生執行,並搭配 Workers AI 做 serverless 推論,或經由 AI Gateway 代理請求。
如果你正在設計 agent 的工具呼叫與網路邊界,這類「底層能力補齊後,哪些套件才真的可用」的判斷,和我們先前談 工具呼叫迴圈的四個停損點 時關注的工程決策是同一類問題。
套件生態仍是最現實的限制
因為跑在 WebAssembly 沙箱內,任何含原生 C/C++/Rust 擴充的套件都必須交叉編譯成 WebAssembly。Cloudflare 過去得手動編譯並託管這些套件,數量因此受限。他們提出 PEP 783,定義名為 PyEmscripten 的執行平台標準,經過一年多討論後被接受,並把 Pyodide 建置工具鏈穩定化、加入 cibuildwheel 支援。
不過 Cloudflare 自己說明,生態仍在採用這個標準,也仍在與主要套件維護者合作加入 PyEmscripten 建置。也就是說,GA 代表語言與平台綁定已達正式支援,不代表你需要的每個套件今天都有可用的 wheel。
對產品團隊的實際意義
Cloudflare 在 python-workers-examples 倉庫放了一批範例,包括用 Queue 加 Workflows 串接 Workers AI 的圖片生成流程、用 Durable Object 維持 Bluesky Jetstream WebSocket 長連線,以及用官方 Python MCP 套件部署 MCP server、用 Vectorize 建 RAG。文件也全面補上 Python 範例,可與 TypeScript 範例切換。
實務上的下一步不是全面改寫,而是挑一個目前卡在「需要自管伺服器」或「需要 JavaScript 膠水」的服務,先確認它依賴的套件已有 WebAssembly 版本,再評估搬遷。GA 解掉的是語言支援與綁定問題,套件覆蓋率仍是你自己的檢查清單。
參考來源
本文由 AI 協助自上述來源整理,經人工審核後發布。
