ブログ
Blogs
Cloudflare Workersをpythonで使える?(PyCon JP 2024)

Cloudflare Workersとは
Cloudflare Workersは、世界中のエッジ環境にコードをデプロイできるサーバーレスプラットフォームとして知られています。
従来はJavaScriptやWebAssembly (WASM) をサポートしていましたが、最近になってPythonも使えるようになりました。
この新機能により、Pythonデベロッパーにとって魅力的な選択肢が増えました。
Cloudflare Workersの特徴
Cloudflare Workersの主な特徴は、ユーザーに近いサーバーからレスポンスを返せることと、コールドスタートが排除されていることです。
これにより、高速なレスポンスが期待できます。また、無料枠があることも大きな魅力です。
PythonでのCloudflare Workers開発
Pythonを使ってCloudflare Workersアプリケーションを開発するには、Node.jsとnpxが必要です。
開発やデプロイには「Wrangler」というツールを使用します。基本的な構成ファイルは以下の通りです。
- src/entry.py:アプリケーションのソースコード
- wrangler.toml:プロジェクトの設定ファイル
PythonコードからJavaScript APIを呼び出すには、Cloudflare Workers独自の「jsモジュール」を使用します。
これにより、ResponseやfetchなどのJavaScript機能をPythonから利用できます。
環境変数とデータベース
環境変数はwrangler.tomlや.dev.varsファイルで定義でき、コード内ではenv引数を通じてアクセスできます。
また、Cloudflare D1というSQLiteベースのサーバーレスデータベースを利用することも可能です。
Built-in packagesとmicropip
Cloudflare WorkersはBuilt-in packagesというPythonパッケージを提供しており、requirements.txtに記述することで利用できます。
ただし、使用できるパッケージは限られています。
その他のパッケージを使用したい場合は、micropipを使ってインストールできますが、制限があります。
仕組みと制限
Cloudflare WorkersでPythonが動作する仕組みは、PyodideというCPythonのWASM実装を利用しています。
これにより、JavaScriptやWASMをサポートする環境でPythonコードを実行できるようになりました。
ただし、この方式には技術的な制限があり、一部の標準パッケージやサードパーティパッケージの使用に制限があります。
Cloudflare WorkersでのPythonサポートは、まだ発展途上の段階にあります。現時点では本番環境へのデプロイに制限があるなど、課題も残されています。
しかし、この新機能によってPythonデベロッパーがサーバーレスアプリケーションを簡単に開発・デプロイできる可能性が広がったことは間違いありません。
今後の進化に期待が高まります。
