Cloudflare Python Workers の一般提供開始

Cloudflare Python Workers が一般提供 (GA) へと移行しました。これにより、Python が Cloudflare Developer Platform の第一級言語として機能するようになり、開発者は Python アプリケーションやライブラリをエッジに直接デプロイできるようになります。また、Workers AI、R2、D1、Hyperdrive、Durable Objects といった Cloudflare サービスとシームレスに統合可能です。

Cloudflare バインディングとのネイティブ統合

Python Workers は現在、Cloudflare Developer Platform のバインディングをネイティブでサポートしており、RPC バウンダリーでの Python と JavaScript オブジェクト間の手動型変換の必要がありません。以前は、Cloudflare Queues などのサービスにデータを送信する際、to_js(Pyodide 由来)のようなグルー コードを使用する必要がありました。現在はランタイムと Python SDK がこのプロセスをカプセル化し、Python のスタイルのインターフェースを提供します:

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

人気の Web フレームワークのサポート

開発者は、FastAPI、Django、Flask といった標準的な Python Web フレームワークを Python Workers 内で実行できるようになりました。これは、Cloudflare Workers ランタイムと Web Server Gateway Interface (WSGI) および Asynchronous Server Gateway Interface (ASGI) 標準を橋渡しする組み込みコネクタによって実現されています。

  • ASGI サポート: workers.asgi パッケージにより、Uvicorn などの別途のウェブサーバーを必要とせずに、FastAPI などの非同期フレームワークを実行できます。
  • WSGI サポート: workers.wsgi パッケージにより、Django などの同期フレームワークをデプロイできます。

Cloudflare のグローバルネットワークがロードバランシングとスケーリングを処理するため、これらのコネクタは薄いブリッジとして機能し、ネイティブの JavaScript リクエストを Python アプリケーションが期待する標準構造に変換します。ワーカー内にフルサーバーを実行するオーバーヘッドは発生しません。

Hyperdrive を通じたデータベース接続

Python Workers は現在、TCP ソケットをサポートしており、これは以前はデータベースドライバの障壁となっていました。Python Workers は WebAssembly (Wasm) サンドボックス内で実行されるため、標準的な POSIX ネットワーク syscalls は通常失敗します。Cloudflare は Workers の connect API を使用してソケットシステムコールを実装し、Python のソケット操作を JavaScript 呼び出しに変換しています。

これにより、aiomysql や asyncpg といった標準的なデータベースドライバを Hyperdrive を介してリレーショナルデータベースに接続できるようになります。たとえば、Python Worker は Hyperdrive バインディングによるホスト、ポート、資格情報を利用して aiomysql を使って SQL クエリを実行できます。

Wasm パッケージエコシステムの拡張

ネイティブ C/C++/Rust 拡張を持つパッケージの制限に対処するため、Cloudflare は PEP 783 の提案と標準化を進めました。この PEP は 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 を使用したリトリーバー拡張生成システムの構築。

Sources

関連

  • Dispatch
  • プロジェクト
  • Dispatch
  • Dispatch
  • Dispatch