本文へ
ハクソク

世界を動かす技術を、日本語で。

Python Workersが一般提供開始されました

元記事: 原文(blog.cloudflare.com)

概要

  • Cloudflare Workers での Python Workers が正式リリース(GA)
  • Pythonが Cloudflare Developer Platform の第一級言語としてサポート
  • FastAPI/Django/Flask など主要フレームワークも利用可能
  • Hyperdrive によるPostgreSQL/MySQL接続や、パッケージエコシステム拡大
  • AI/機械学習ライブラリやHTTPクライアントもシームレスに動作

Python Workers正式リリース(GA)概要

  • Python Workers が正式版(GA)として利用可能
  • Pythonが Cloudflare Developer Platform で第一級サポート言語に昇格
  • 既存のPythonコード、ライブラリ、設計パターンをCloudflare Workersでそのまま利用可能
  • Workers AI、R2、D1、Hyperdrive などCloudflare各種サービスとの連携
  • FastAPI、Django、Flask 等の人気フレームワークもPython Workers内で動作

Python Workersの技術的背景

  • WebAssembly 対応により、PythonインタプリタをWasmで実行
  • Pyodide を活用し、多様なPythonアプリケーションをサポート
  • 無限スケーラビリティ を備えたPythonアプリケーションプラットフォームを目指す
  • 既に多くの開発者がPython Workersでアプリケーションを構築中

Cloudflare PlatformバインディングのPythonネイティブ対応

  • 以前はPythonオブジェクトとTypeScriptオブジェクト間で明示的な変換処理が必要

  • 現在は WorkersランタイムとPython SDK で型変換を自動処理

  • PythonコードのみでCloudflareバインディングをシームレスに利用可能

    • 例:self.env.QUEUE.send({"key": "value"}) のように直接記述可能

Webフレームワーク連携:FastAPI、Django、Flask

  • FastAPI、Django、Flask などのWebフレームワークをPython Workersで実行可能

  • workers.asgi や workers.wsgi パッケージでASGI/WSGIアプリケーションを簡単に接続

  • Cloudflare WorkersがWebサーバー役割を担い、グローバルな負荷分散・スケーリングを自動化

  • コード例(FastAPI):

    from fastapi import FastAPI
    from workers import asgi
    app = FastAPI()
    @app.get("/")
    async def root():
        return {"message": "Hello, world!"}
    Default = asgi.entrypoint(app)
    
  • DjangoやFlaskも同様に workers.wsgi 経由で利用可能

  • すべてのWSGI/ASGI準拠フレームワークで利用可能

HyperdriveでPostgreSQL/MySQLに接続

  • Python Workersで TCPソケット をサポートし、DBドライバが利用可能に

  • Workers connect API を使い、Pythonのsocket操作をJavaScriptに変換

  • Hyperdriveバインディング設定例(wrangler.toml):

    "hyperdrive": [
      {
        "binding": "HYPERDRIVE_MYSQL",
        "id": "<example id: 57b7076f58be42419276f058a8968187>"
      }
    ]
    
  • DBドライバ(例:aiomysql)で通常通り接続・クエリ実行が可能

WebAssemblyパッケージエコシステムの拡大

  • ネイティブ拡張(C/C++/Rust)パッケージは WebAssembly向けクロスコンパイル が必要
  • Pyodide ベースでエコシステム拡大を推進
  • PEP 783 (PyEmscripten標準)を提案・採用し、パッケージビルド・配布を標準化
  • cibuildwheel でもPyEmscripten対応を追加
  • 将来的には全PythonパッケージがWebAssembly対応wheelを持つことを目指す

AIエージェント・パイプライン構築

  • openai、langchain 等のAI/MLライブラリがPython Workersで動作可能

  • HTTPクライアント(requests、httpx等)が JavaScript fetch API を経由して利用可能

  • Workers AIと組み合わせて サーバーレスGPU推論 や AI Gateway経由のプロキシ も実現

  • コード例(langchain-cloudflare利用):

    from langchain_cloudflare import ChatCloudflareWorkersAI
    from langchain_core.output_parsers import StrOutputParser
    from langchain_core.prompts import PromptTemplate
    from workers import Response, WorkerEntrypoint
    
    class Default(WorkerEntrypoint):
        async def fetch(self, request):
            prompt = PromptTemplate.from_template(
                "In one sentence, describe a great day in the life of an {profession}."
            )
            llm = ChatCloudflareWorkersAI(
                model_name="@cf/meta/llama-3.3-70b-instruct-fp8-fast",
                binding=self.env.AI,
                max_tokens=64,
            )
            chain = prompt | llm | StrOutputParser()
            result = await chain.ainvoke({"profession": "electrician"})
            return Response.json({"result": result})
    

まとめ:Python Workersでできること

  • Cloudflareエコシステムと連携する 本番運用可能なパターン集 (python-workers-examplesリポジトリで公開)
  • AIアプリケーション、 APIサーバー、 データベース連携、 Webアプリ など多様なユースケースに対応
  • Python開発者が慣れ親しんだエコシステムを サーバーレス/グローバルスケール で活用可能

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

これはもちろんCloudflareの技術だけど、最初にタイトルを見たときは「全てのPythonプログラマーをAIに置き換えたから、プログラマーは出て行って一般的に利用可能です」って思ったよ(笑)

└

最初はソフトウェア開発の仕事市場が厳しいっていう見出しだと思ったよ。

└

うん、最初にこれが「雇えるクラウド上のPythonエンジニア」サービスになると思ったよ。

コールドスタートのパフォーマンスはどうなの?WorkersでWebAssemblyを使うデメリットの一つは、立ち上げに時間がかかることだったけど、もしかしたらその問題を解決する方法を見つけたのかも。

└

コールドスタートの数値は前のブログ記事に載ってるよ:https://blog.cloudflare.com/python-workers-advancements/。まだやることはあるし、次はそこに焦点を当てる予定。

└

多くの場合、コールドスタートの時間はユーザーには見えないかもしれないね。例えば、CDNから静的コンテンツを配信しているなら、更新データを取得している間にローカルストレージにある古いコンテンツを表示できるかも。もしそれが100ms未満で起こるなら、かなり瞬時に感じるはずだよね?

いつかGoも同じように使いやすくなるといいな。そう願ってる。

└

同意だね。それまで待つよ。でも、Pythonのサポートがやっと追加されたのは嬉しい動きだね。

└

確か、WASM上でGoを実行するのは無理だよね。

Mojoもサポートすべきだね。エッジコンピューティングにぴったりかもしれないし。

PyodideはPythonエコシステムの中でめっちゃクールな存在だね。Cloudflareが彼らにお金を投資することを考えてくれるといいな:https://opencollective.com/pyodide/contribute

└

100%同意!数年前にHoodを雇ったのは、そのプロジェクトにとって素晴らしい投資だったよ(もっとお金をかけてもいいと思うけどね =))

Hacker Newsで議論の続きを見る

同じ出典の記事