コンテンツにスキップ

外部関数インターフェース (FFI)

Pyodideを介して、Python WorkersはJavaScriptへの外部関数インターフェース (FFI)を提供します。これにより、次のことが可能になります:

Pyodideの外部関数インターフェースの詳細はこちらに文書化されており、Pythonで書かれたWorkersはこれをフルに活用できます。

Python Workersからのバインディングの使用

バインディングを使用すると、WorkerがCloudflare Developer Platform上のリソースと対話できます。Workerでバインディングを宣言すると、特定の機能、たとえばR2バケットにファイルを読み書きする能力を付与します。

たとえば、Python WorkerからKV名前空間にアクセスするには、Workerのwrangler.tomlに次のように宣言します:

main = "./src/index.py"
kv_namespaces = [
{ binding = "FOO", id = "<YOUR_KV_NAMESPACE_ID>" }
]

…そして、envで公開されているバインディングオブジェクトに対して.get()を呼び出します:

from js import Response
async def on_fetch(request, env):
await env.FOO.put("bar", "baz")
bar = await env.FOO.get("bar")
return Response.new(bar) # "baz"を返す

内部的には、envは実際にはJavaScriptオブジェクトです。.FOOを呼び出すと、JsProxyを介してこのプロパティにアクセスしています — JavaScriptオブジェクトをPythonオブジェクトのように振る舞わせる特別なプロキシオブジェクトです。

Python WorkersからのJavaScriptグローバルの使用

PythonでWorkersを書くとき、jsモジュールからJavaScriptグローバルにアクセスできます。たとえば、以下の例でResponsejsからインポートされていることに注目してください:

from js import Response
def on_fetch(request):
return Response.new("Hello World!")

PythonからJavaScript関数を呼び出す方法については、Pythonの例を参照してください。これには、console.logやロギング、Responseへのオプションの提供、JSONの解析が含まれます。