Workers - Python and JavaScript Workers can now call each other via RPC
- Announced
- Tags
- Workers
- Severity
- info, set by
reef/rss-rule-v1 - Source
- https://developers.cloudflare.com/changelog/post/2026-08-03-python-javascript-rpc/
<p>You can now call methods between Python and JavaScript Workers using <a href="https://developers.cloudflare.com/workers/runtime-apis/rpc/">Workers RPC</a>. This works through <a href="https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/">Service bindings</a> without extra dependencies, schema definitions, or serialization code.</p> <p>Cross-language RPC calls behave like ordinary function calls. Exceptions propagate to the call site. You can pass <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#supported_types" target="_blank" rel="noopener">structured cloneable types<span class="external-link"> ↗︎</span></a> as parameters or return values, and Pyodide Foreign Function Interface (FFI) automatically converts types between languages.</p> <div tabindex="-1" class="heading-wrapper level-h4"><h4 id="call-a-typescript-worker-from-python">Call a TypeScript Worker from Python</h4><a class="anchor-link" href="#call-a-typescript-worker-from-python"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div> <p>Define a method in a TypeScript Worker:</p> <div><div data-nb-tabs data-nb-sync-key="workersExamples" class><div class="relative flex border-b border-border" role="tablist" data-nb-tabs-list><span class="bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out" data-nb-tabs-indicator aria-hidden="true"></span></div><div class="mt-3"><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="JavaScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="js"><figcaption class="nb-code-title"><span class="nb-code-title-name">index.js</span><span class="nb-code-title-lang">js</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="js" data-nb-lang="js"><code><span class="line"><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> { WorkerEntrypoint } </span><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-mdbnqw"> "cloudflare:workers"</span><span class="nb-shiki-140thh">;</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> class</span><span class="nb-shiki-1t8gfj"> RpcService</span><span class="nb-shiki-1itgoe"> extends</span><span class="nb-shiki-1t8gfj"> WorkerEntrypoint</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1t8gfj"> add</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">a</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-1jdh33">b</span><span class="nb-shiki-140thh">) {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> a </span><span class="nb-shiki-1itgoe">+</span><span class="nb-shiki-140thh"> b;</span></span> <span class="line"><span class="nb-shiki-140thh"> }</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="TypeScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="ts"><figcaption class="nb-code-title"><span class="nb-code-title-name">index.ts</span><span class="nb-code-title-lang">ts</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="ts" data-nb-lang="ts"><code><span class="line"><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> { WorkerEntrypoint } </span><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-mdbnqw"> "cloudflare:workers"</span><span class="nb-shiki-140thh">;</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> class</span><span class="nb-shiki-1t8gfj"> RpcService</span><span class="nb-shiki-1itgoe"> extends</span><span class="nb-shiki-1t8gfj"> WorkerEntrypoint</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1t8gfj"> add</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">a</span><span class="nb-shiki-1itgoe">:</span><span class="nb-shiki-dzsirb"> number</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-1jdh33">b</span><span class="nb-shiki-1itgoe">:</span><span class="nb-shiki-dzsirb"> number</span><span class="nb-shiki-140thh">)</span><span class="nb-shiki-1itgoe">:</span><span class="nb-shiki-1t8gfj"> Promise</span><span class="nb-shiki-140thh"><</span><span class="nb-shiki-dzsirb">number</span><span class="nb-shiki-140thh">> {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> a </span><span class="nb-shiki-1itgoe">+</span><span class="nb-shiki-140thh"> b;</span></span> <span class="line"><span class="nb-shiki-140thh"> }</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div></div></div></div> <p>Call it from a Python Worker through a Service binding:</p> <figure class="nb-code-figure" data-nb-lang="python"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="python" data-nb-lang="python"><code><span class="line"><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-140thh"> workers </span><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> Response, WorkerEntrypoint</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">class</span><span class="nb-shiki-1t8gfj"> Default</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1t8gfj">WorkerEntrypoint</span><span class="nb-shiki-140thh">):</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1itgoe"> def</span><span class="nb-shiki-1t8gfj"> fetch</span><span class="nb-shiki-140thh">(self, request):</span></span> <span class="line"><span class="nb-shiki-140thh"> rpc </span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-dzsirb"> self</span><span class="nb-shiki-140thh">.env.</span><span class="nb-shiki-dzsirb">RPC</span></span> <span class="line"><span class="nb-shiki-140thh"> result </span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-1itgoe"> await</span><span class="nb-shiki-140thh"> rpc.add(</span><span class="nb-shiki-dzsirb">42</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-dzsirb">144</span><span class="nb-shiki-140thh">)</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> Response.json({</span><span class="nb-shiki-mdbnqw">"result"</span><span class="nb-shiki-140thh">: result})</span></span></code></pre></figure> <p>Configure the Service binding in the Python Worker's Wrangler configuration:</p> <div data-nb-tabs data-nb-sync-key="wranglerConfig" class><div class="relative flex border-b border-border" role="tablist" data-nb-tabs-list><span class="bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out" data-nb-tabs-indicator aria-hidden="true"></span></div><div class="mt-3"><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="wrangler.jsonc" class><figure class="nb-code-figure" data-nb-lang="jsonc"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="jsonc" data-nb-lang="jsonc"><code><span class="line"><span class="nb-shiki-140thh">{</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "services"</span><span class="nb-shiki-140thh">: [</span></span> <span class="line"><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "binding"</span><span class="nb-shiki-140thh">: </span><span class="nb-shiki-mdbnqw">"RPC"</span><span class="nb-shiki-140thh">,</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "service"</span><span class="nb-shiki-140thh">: </span><span class="nb-shiki-mdbnqw">"ts-rpc-server"</span><span class="nb-shiki-140thh">,</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "entrypoint"</span><span class="nb-shiki-140thh">: </span><span class="nb-shiki-mdbnqw">"RpcService"</span></span> <span class="line"><span class="nb-shiki-140thh"> }</span></span> <span class="line"><span class="nb-shiki-140thh"> ]</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="wrangler.toml" class><figure class="nb-code-figure" data-nb-lang="toml"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="toml" data-nb-lang="toml"><code><span class="line"><span class="nb-shiki-140thh">[[</span><span class="nb-shiki-1t8gfj">services</span><span class="nb-shiki-140thh">]]</span></span> <span class="line"><span class="nb-shiki-140thh">binding = </span><span class="nb-shiki-mdbnqw">"RPC"</span></span> <span class="line"><span class="nb-shiki-140thh">service = </span><span class="nb-shiki-mdbnqw">"ts-rpc-server"</span></span> <span class="line"><span class="nb-shiki-140thh">entrypoint = </span><span class="nb-shiki-mdbnqw">"RpcService"</span></span></code></pre></figure></div></div></div><script type="module" src="https://developers.cloudflare.com/home/runner/work/cloudflare-docs/cloudflare-docs/src/components/ui/tabs/Tabs.astro?astro&type=script&index=0&lang.ts"></script> <div tabindex="-1" class="heading-wrapper level-h4"><h4 id="call-a-python-worker-from-javascript">Call a Python Worker from JavaScript</h4><a class="anchor-link" href="#call-a-python-worker-from-javascript"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div> <p>Define a method in a Python Worker:</p> <figure class="nb-code-figure" data-nb-lang="python"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="python" data-nb-lang="python"><code><span class="line"><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-140thh"> workers </span><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> WorkerEntrypoint</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">class</span><span class="nb-shiki-1t8gfj"> Default</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1t8gfj">WorkerEntrypoint</span><span class="nb-shiki-140thh">):</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1itgoe"> def</span><span class="nb-shiki-1t8gfj"> highlight_code</span><span class="nb-shiki-140thh">(self, code: </span><span class="nb-shiki-dzsirb">str</span><span class="nb-shiki-140thh">, language: </span><span class="nb-shiki-dzsirb">str</span><span class="nb-shiki-140thh">) -> </span><span class="nb-shiki-dzsirb">dict</span><span class="nb-shiki-140thh">:</span></span> <span class="line"><span class="nb-shiki-1itgoe"> from</span><span class="nb-shiki-140thh"> pygments.formatters </span><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> HtmlFormatter</span></span> <span class="line"><span class="nb-shiki-1itgoe"> from</span><span class="nb-shiki-140thh"> pygments </span><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> highlight</span></span> <span class="line"><span class="nb-shiki-1itgoe"> from</span><span class="nb-shiki-140thh"> pygments.lexers </span><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> get_lexer_by_name</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-140thh"> lexer </span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-140thh"> get_lexer_by_name(language, </span><span class="nb-shiki-1jdh33">stripall</span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-dzsirb">True</span><span class="nb-shiki-140thh">)</span></span> <span class="line"><span class="nb-shiki-140thh"> formatter </span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-140thh"> HtmlFormatter(</span><span class="nb-shiki-1jdh33">linenos</span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-dzsirb">True</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-1jdh33">cssclass</span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-mdbnqw">"highlight"</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-1jdh33">style</span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-mdbnqw">"monokai"</span><span class="nb-shiki-140thh">)</span></span> <span class="line"><span class="nb-shiki-140thh"> highlighted_html </span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-140thh"> highlight(code, lexer, formatter)</span></span> <span class="line"><span class="nb-shiki-140thh"> css </span><span class="nb-shiki-1itgoe">=</span><span class="nb-shiki-140thh"> formatter.get_style_defs(</span><span class="nb-shiki-mdbnqw">".highlight"</span><span class="nb-shiki-140thh">)</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "html"</span><span class="nb-shiki-140thh">: highlighted_html,</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "css"</span><span class="nb-shiki-140thh">: css</span></span> <span class="line"><span class="nb-shiki-140thh"> }</span></span></code></pre></figure> <p>Call it from a JavaScript Worker through a Service binding:</p> <div><div data-nb-tabs data-nb-sync-key="workersExamples" class><div class="relative flex border-b border-border" role="tablist" data-nb-tabs-list><span class="bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out" data-nb-tabs-indicator aria-hidden="true"></span></div><div class="mt-3"><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="JavaScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="js"><figcaption class="nb-code-title"><span class="nb-code-title-name">index.js</span><span class="nb-code-title-lang">js</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="js" data-nb-lang="js"><code><span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> default</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1t8gfj"> fetch</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">request</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-1jdh33">env</span><span class="nb-shiki-140thh">) {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> const</span><span class="nb-shiki-dzsirb"> rpc</span><span class="nb-shiki-1itgoe"> =</span><span class="nb-shiki-140thh"> env.</span><span class="nb-shiki-dzsirb">PYTHON_RPC</span><span class="nb-shiki-140thh">;</span></span> <span class="line"><span class="nb-shiki-1itgoe"> const</span><span class="nb-shiki-dzsirb"> result</span><span class="nb-shiki-1itgoe"> =</span><span class="nb-shiki-1itgoe"> await</span><span class="nb-shiki-140thh"> rpc.</span><span class="nb-shiki-1t8gfj">highlight_code</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-mdbnqw">"print(42)"</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-mdbnqw">"python"</span><span class="nb-shiki-140thh">);</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> Response.</span><span class="nb-shiki-1t8gfj">json</span><span class="nb-shiki-140thh">(result);</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh">};</span></span></code></pre></figure></div><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="TypeScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="ts"><figcaption class="nb-code-title"><span class="nb-code-title-name">index.ts</span><span class="nb-code-title-lang">ts</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="ts" data-nb-lang="ts"><code><span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> default</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1t8gfj"> fetch</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">request</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-1jdh33">env</span><span class="nb-shiki-140thh">) {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> const</span><span class="nb-shiki-dzsirb"> rpc</span><span class="nb-shiki-1itgoe"> =</span><span class="nb-shiki-140thh"> env.</span><span class="nb-shiki-dzsirb">PYTHON_RPC</span><span class="nb-shiki-140thh">;</span></span> <span class="line"><span class="nb-shiki-1itgoe"> const</span><span class="nb-shiki-dzsirb"> result</span><span class="nb-shiki-1itgoe"> =</span><span class="nb-shiki-1itgoe"> await</span><span class="nb-shiki-140thh"> rpc.</span><span class="nb-shiki-1t8gfj">highlight_code</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-mdbnqw">"print(42)"</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-mdbnqw">"python"</span><span class="nb-shiki-140thh">);</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> Response.</span><span class="nb-shiki-1t8gfj">json</span><span class="nb-shiki-140thh">(result);</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh">};</span></span></code></pre></figure></div></div></div></div> <p>Configure the Service binding in the JavaScript Worker's Wrangler configuration:</p> <div data-nb-tabs data-nb-sync-key="wranglerConfig" class><div class="relative flex border-b border-border" role="tablist" data-nb-tabs-list><span class="bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out" data-nb-tabs-indicator aria-hidden="true"></span></div><div class="mt-3"><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="wrangler.jsonc" class><figure class="nb-code-figure" data-nb-lang="jsonc"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="jsonc" data-nb-lang="jsonc"><code><span class="line"><span class="nb-shiki-140thh">{</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "services"</span><span class="nb-shiki-140thh">: [</span></span> <span class="line"><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "binding"</span><span class="nb-shiki-140thh">: </span><span class="nb-shiki-mdbnqw">"PYTHON_RPC"</span><span class="nb-shiki-140thh">,</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "service"</span><span class="nb-shiki-140thh">: </span><span class="nb-shiki-mdbnqw">"py-rpc-server"</span></span> <span class="line"><span class="nb-shiki-140thh"> }</span></span> <span class="line"><span class="nb-shiki-140thh"> ]</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="wrangler.toml" class><figure class="nb-code-figure" data-nb-lang="toml"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="toml" data-nb-lang="toml"><code><span class="line"><span class="nb-shiki-140thh">[[</span><span class="nb-shiki-1t8gfj">services</span><span class="nb-shiki-140thh">]]</span></span> <span class="line"><span class="nb-shiki-140thh">binding = </span><span class="nb-shiki-mdbnqw">"PYTHON_RPC"</span></span> <span class="line"><span class="nb-shiki-140thh">service = </span><span class="nb-shiki-mdbnqw">"py-rpc-server"</span></span></code></pre></figure></div></div></div> <p>For more details on the announcement, read the <a href="https://blog.cloudflare.com/python-workers-rpc/" target="_blank" rel="noopener">blog post<span class="external-link"> ↗︎</span></a>.</p> <p>For more information, refer to the <a href="https://developers.cloudflare.com/workers/runtime-apis/rpc/">Workers RPC documentation</a> and the <a href="https://developers.cloudflare.com/workers/languages/python/">Python Workers overview</a>.</p>
The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.