← Cloudflare Workers / workers / languages / python
Foreign Function Interface (FFI)
Pomocí Pyodide ↗, Python Workers poskytují Foreign Function Interface (FFI) ↗ na JavaScript. To vám umožňuje:
- Použijte vazby ke zdrojům na Cloudflare, včetně Workers AI, Vectorize, R2, KV, D1, Queues, Durable Objects, Service Bindings a další.
- Použijte globální objekty JavaScriptu, jako
Request,Response, afetch(). - Využijte kompletní sadu funkcí Cloudflare Workers: pokud je nějaké API dostupné v JavaScriptu, můžete k němu přistupovat i v Python Workeru, a to čistě pomocí kódu v Pythonu.
Podrobnosti o Foreign Function Interface nástroje Pyodide jsou popsány zde ↗, a Workers napsané v Pythonu toho mohou plně využít.
Používání bindingů z Python Workers
Bindings umožňují vašemu Workeru interagovat se zdroji na Cloudflare Developer Platform. Když ve svém Workeru deklarujete binding, přidělíte mu konkrétní schopnost, například možnost číst a zapisovat soubory do R2 bucket.
Chcete-li například přistoupit k KV namespace z Python Workeru byste ve svém Workeru deklarovali následující Konfigurační soubor Wrangler:
{
"main": "./src/index.py",
"kv_namespaces": [
{
"binding": "FOO",
"id": "<YOUR_KV_NAMESPACE_ID>"
}
]
}main = "./src/index.py"
[[kv_namespaces]]
binding = "FOO"
id = "<YOUR_KV_NAMESPACE_ID>"...a poté zavolejte .get() na objektu bindingu, který je zpřístupněn na env:
from workers import WorkerEntrypoint, Response
class Default(WorkerEntrypoint):
async def fetch(self, request):
await self.env.FOO.put("bar", "baz")
bar = await self.env.FOO.get("bar")
return Response(bar) # returns "baz"Převod Pythonu do JavaScriptu
Občas budete muset pro spolupráci s API JavaScriptu převést objekt Pythonu na JavaScript. Pyodide k tomu poskytuje to_js funkci pro usnadnění této konverze.
from js import Object
from pyodide.ffi import to_js as _to_js
from workers import WorkerEntrypoint, Response
# to_js converts between Python dictionaries and JavaScript Objects
def to_js(obj):
return _to_js(obj, dict_converter=Object.fromEntries)Podrobnosti najdete v dokumentace k pyodide.ffi.to_js ↗.
Používání globálních objektů JavaScriptu z Python Workers
Doporučujeme použít workers modul, který poskytujeme prostřednictvím naší workers-runtime-sdk balíček pro přístup ke globálním proměnným JavaScriptu pythoničtějším způsobem.
Pokud však potřebujete z jakéhokoli důvodu přistupovat ke globálním proměnným JavaScriptu přímo, můžete je importovat z js modul.
Všimněte si například, jak Response se importuje z js v příkladu níže:
from workers import WorkerEntrypoint
from js import Response
class Default(WorkerEntrypoint):
async def fetch(self, request):
return Response.new("Hello World!")Viz Příklady v Pythonu kde zjistíte, jak volat funkce JavaScriptu z Pythonu, včetně console.log a protokolování, přičemž nabízí možnosti Response, a parsování JSON.