🙆♀️
workerdのpyodide統合を試す
昨年末ぐらいからworkerdのPyodide統合の開発が活発になっている
search results: repo:cloudflare/workerd pyodide
PyodideはWasmを使ってPythonインタプリターをブラウザ上で実行する環境で、これがリリースされるとRustサポートのようにCloudflare WorkersにPythonで書いたコードを直接デプロイできるようになると思われる
cloudflare/python-worker-hello-worldが以前からあったがこれはpythonのコードを事前にjavascriptに変換するというやつでWasmではない
セットアップ
cloudflare/workerdのTCP接続機能を試すではなぜかworkerd自体のbazel buildからはじめてしまっていたが、このpyodide統合を試すだけならReleases · cloudflare/workerdからバイナリをダウンロードしてくるだけでよかった
❯ ./workerd-darwin-arm64 --version
workerd 2024-01-29
実行
サンプルコードは以下にある
❯ git clone https://github.com/cloudflare/workerd.git --depth 1
❯ cd workerd/samples/pyodide
(name = "worker.py", pythonModule = embed "./worker.py"),
の部分は最近変更があったので古いバージョンだとname = "worker"
にしないとエラーが出るかもしれない
以下のように実行すると http://localhost:8080/
にhello worldが表示される
❯ ./workerd-darwin-arm64 serve config.capnp --experimental
サードパーティモジュールの扱いについては実行時にmicropipで遅延インストールが走る
fastapiやlangchainなんかは既にロードできるみたいだ
依存モジュールはworkerdのconfigファイル内に書く
読み込んだモジュール名が出力される
❯ ./workerd-darwin-arm64 serve config.capnp --experimental
Loading aiohttp, aiosignal, frozenlist, async-timeout, attrs, six, charset-normalizer, multidict, yarl, idna, ssl, openssl, requests, urllib3, certifi, tqdm, numpy, pydantic, typing-extensi
ons, sqlalchemy, sqlite3, pyyaml
Discussion