Cloudflare Python Workers 正式推出

Cloudflare Python Workers 現已正式推出(GA),將 Python 轉化為 Cloudflare 開發者平台上的第一等語言。這讓開發者能夠直接將 Python 應用程式和程式庫部署至邊緣,並與 Cloudflare 服務(如 Workers AI、R2、D1、Hyperdrive 和 Durable Objects)無縫整合。

與 Cloudflare 繫結的原生整合

Python Workers 現在原生支援 Cloudflare 開發者平台的繫結,消除了在 RPC 边界上手動轉換 Python 與 JavaScript 物件類型的需求。過去,開發者必須使用膠水程式碼(例如 Pyodide 的 to_js)將資料傳送至 Cloudflare Queues 等服務。現在,執行時與 Python SDK 已封裝此過程,提供更符合 Python 風格的介面:

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

支援常見的 Web 框架

開發者現在可以在 Python Workers 中執行標準的 Python Web 框架,包括 FastAPI、Django 和 Flask。這透過內建的連接器實現,將 Cloudflare Workers 執行時與 Web Server Gateway Interface (WSGI) 和 Asynchronous Server Gateway Interface (ASGI) 標準橋接。

  • ASGI 支援: workers.asgi 套件允許 FastAPI 等非同步框架在不需額外 Web 伺服器(如 Uvicorn)的情況下執行。
  • WSGI 支援: workers.wsgi 套件讓 Django 等同步框架得以部署。

由於 Cloudflare 全球網路負責負載平衡與擴展,這些連接器僅作為輕量級橋樑,將原生 JavaScript 請求轉譯為 Python 應用程式所預期的標準結構,無需在 worker 內執行完整伺服器的開銷。

透過 Hyperdrive 連接資料庫

Python Workers 現在支援 TCP 套接字,這曾是資料庫驅動程式的阻礙。由於 Python Workers 在 WebAssembly (Wasm) 沙箱中執行,標準的 POSIX 網路系統呼叫通常會失敗。Cloudflare 使用 Workers 的 connect API 實作套接字系統呼叫,將 Python 套接字操作轉譯為 JavaScript 呼叫。

這使得標準資料庫驅動程式(如 aiomysql 或 asyncpg)能透過 Hyperdrive 連接關係型資料庫。例如,Python Worker 現在可利用 Hyperdrive 繫結提供的主機、埠與憑證,使用 aiomysql 執行 SQL 查詢。

擴展 Wasm 套件生態系

為解決具有原生 C/C++/Rust 擴充功能的套件限制,Cloudflare 提出並協助標準化 PEP 783,定義了 PyEmscripten 平台。這讓套件維護者能為 PyEmscripten 平台建構並發佈 wheel,使其在所有實作該平台的環境中可用。

Cloudflare 也穩定了 Pyodide 建構工具鏈,並在 cibuildwheel 中新增 PyEmscripten 支援,簡化套件維護者採用此標準的流程。

AI 代理與工作流程開發

Python 的資料科學生態系使其非常適合用於 AI 代理。Cloudflare 確保 requests 和 httpx 等 HTTP 客戶端可在 Wasm 環境中透過 JavaScript fetch API 路由請求。結合新的套接字支援,這讓 openai、langchain 和 mcp 等套件能原生在 Python Workers 中執行。

開發者可將這些套件與 Workers AI 結合,實現無伺服器 GPU 推論,或使用 langchain-cloudflare 套件在邊緣協調 AI 工作流程。

社群見解與技術考量

儘管正式推出是重大里程碑,社群討論也凸顯了若干技術取捨與架構考量:

  • 冷啟動效能: 部分開發者對冷啟動時間表示擔憂。競爭對手(Wasmer)在一次基準測試中聲稱,Cloudflare Workers 上的最小 Python 應用程式啟動時間(約 900ms)遠高於其自身實作(60ms),但這些數字可能已過時。
  • urllib3 維護問題: urllib3 的維護者指出,雖然 Cloudflare 貢獻了對 Pyodide/Emscripten 的支援,但長期維護責任仍落在上游專案上。他們警告 Emscripten 後端仍屬實驗性,網路語意可能與標準後端不同。
  • 資源開銷: 社群成員建議,基於 Pyodide 的架構可能比原生 V8 執行時消耗更多記憶體。

"我很樂見這項工作已貢獻至上游,對 Pyodide 和 Cloudflare 都有幫助。但我認為,資助對上游專案的貢獻,與資助後續必須支援該專案的維護者之間,存在著顯著差異。"

生產就緒的模式

Cloudflare 提供了多個使用 Python Workers 可建構的範例:

  • 非同步 AI 協調: 使用 Cloudflare Queues、Workflows 和 Workers AI 的圖像到圖像生成器。
  • 即時串流處理: 使用 Durable Objects 維持長久狀態的 Bluesky Jetstream WebSocket 消費者。
  • MCP 伺服器: 使用官方 Python MCP 套件部署 Model Context Protocol 伺服器。
  • RAG 系統: 使用 Workers AI 和 Vectorize 建構 Retrieval-Augmented Generation 系統。

Sources

相關

  • Dispatch
  • 專案
  • Dispatch
  • Dispatch
  • Dispatch