Python で書いた Workers は Pyodide ↗ が実行します。 Pyodide は CPython ↗(Python の参照実装。一般に「Python」と呼ばれるもの)を WebAssembly にコンパイルしたものです。
Python Worker を書くと、コードは V8 isolate 内の Pyodide が直接解釈します。 詳細は Workers の仕組み を参照してください。
基本的な Python Worker には、WorkerEntrypoint を継承した Default クラスを置く Python ファイルがあります。例は次のとおりです。
from workers import Response, WorkerEntrypoint
class Default(WorkerEntrypoint):
async def fetch(self, request):
return Response("Hello world!")...そして、この .py ファイルを指す Wrangler 設定ファイル です。
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "hello-world-python-worker",
"main": "src/entry.py",
// Set this to today's date
"compatibility_date": "2026-09-20"
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "hello-world-python-worker"
main = "src/entry.py"
# Set this to today's date
compatibility_date = "2026-09-20"ローカル開発で uv run pywrangler dev を実行すると、Workers ランタイムは次を行います。
- 互換性日付をもとに、必要な Pyodide のバージョンを決めます
pyproject.tomlファイルをもとに、必要なパッケージをインストールします- Worker 用の新しい V8 isolate を作り、Pyodide を自動で注入します
- Pyodide で Python コードを配信します
追加のツールチェーンや事前コンパイルは不要です。Python の実行環境は Workers ランタイムが直接提供し、JavaScript で書いた Workers と同じ流れです。
Workers 内での Python の使い方は Python の例 を参照してください。
コールドスタート時間を短くするため、Python Worker をデプロイするとき、Cloudflare はコストの高い処理をできるだけデプロイ時に済ませます。uv run pywrangler deploy を実行すると、次が起きます。
- Wrangler が Python コードと、
pyproject.tomlに含まれるパッケージを Workers API にアップロードします。 - Cloudflare が Python コードを Workers ランタイムに送り、検証します。
- Cloudflare が Worker 用の新しい V8 isolate を作り、Pyodide を自動で注入します。
- Cloudflare が Worker のエントリポイントモジュールと、それがトップレベルでインポートするものを実行し、Worker の WebAssembly 線形メモリのスナップショットを取ります。つまり、コストの高い初期化を実行時ではなくデプロイ時に行います。
- Cloudflare がこのスナップショットを Worker の Python コードと一緒に Cloudflare ネットワークへデプロイします。
リクエストが Worker に届くと、このスナップショットを読み込んで isolate 内の Worker を起動するため、コストの高い初期化時間を避けられます。
パフォーマンス最適化と、Workers ランタイムが Python Workers のコールドスタートを減らす方法の詳細は、Python Workers を紹介するブログ記事 ↗ を参照してください。
新しい Python バージョンは毎年 8 月にリリースされ、新しい Pyodide バージョンはその 6 か月後にリリースされます。 新しい Pyodide が公開されると、指定した互換性日付(Compatibility Date)以降にだけ有効になる互換性フラグ(Compatibility Flag)の後ろに置いて Workers に追加します。 これにより、破壊的変更のリスクなしに継続的に更新でき、JavaScript 向けに示している約束を Python にも広げます。
各 Python リリースには 5 年のサポート期間 ↗ があります。 ある Python バージョンのサポート期間が過ぎると、セキュリティパッチは適用されなくなり、そのバージョンに依存するのは安全ではありません。 本番で稼働中のアプリケーションを壊さないという Workers Runtime の方針に従い、サポート期間外のバージョン上の既存 Python Workers は動き続けます。 ただし、新しいプロジェクトでサポート期間外の Python バージョンを使うことは推奨せず、これらのバージョンから生じる問題へのパッチも提供しません。 古い Python バージョンでは、レイテンシや CPU 時間の増加など、性能が落ちることも保証できません。