Workers RPC теперь работает между Python и JavaScript, позволяя вызывать методы и передавать объекты без дополнительных настроек

Cloudflare объявила, что встроенная система RPC, построенная на Cap'n Proto, теперь поддерживает межъязыковые вызовы между JavaScript и Python Workers, причём это работает без определения схем, добавления зависимостей или ручной сериализации.
Workers RPC теперь работает между Python и JavaScript, позволяя вызывать методы и передавать объекты без дополнительных настроек

Workers RPC теперь работает между Python и JavaScript, позволяя вызывать методы и передавать объекты без дополнительных настроек. Фото: из архива компании

Разработчики могут вызывать методы Python из TypeScript и наоборот, передавать функции как колбэки и обмениваться сложными объектами так, будто код написан на одном языке.

В основе этой возможности лежит Pyodide — интерпретатор CPython, скомпилированный в WebAssembly, который через свой Foreign Function Interface автоматически преобразует типы между языками: например, JavaScript-объект превращается в Python-словарь, Number — в int или float, а массив — в список, причём для пользовательских классов и функций создаются прокси-объекты, которые прозрачно перенаправляют вызовы через границу.

Для корректной работы с Web API-объектами вроде Request, Response или Blob, у которых нет прямых аналогов в Python, Cloudflare добавила пакет workers-runtime-sdk, который перехватывает такие объекты при пересечении языковой границы и превращает их в идиоматичные Python-сущности, и этот пакет включается по умолчанию при развёртывании через команду uv run pywrangler deploy.

В качестве примера приводится использование популярного Python-пакета Pygments для подсветки синтаксиса: JavaScript Worker вызывает метод Python Worker, который выполняет сложную обработку и возвращает результат, причём для связи достаточно объявить сервисную привязку в файле конфигурации wrangler.jsonc, указав имя Python-воркера, а в двух терминалах одновременно запустить npx wrangler dev и uv run pywrangler dev для локальной отладки.

Все вызовы являются асинхронными, исключения корректно распространяются между языками, а производительность практически не страдает, поскольку Workers обычно выполняются в одном потоке и RPC не требует сетевых запросов.

Упомянутый сервис
Cloudflare Сервис для поддержки и защиты цифровой инфраструктуры.
Сервис для поддержки и защиты цифровой инфраструктуры.

Больше интересного

Актуальное

Zoom упрощает проведение собеседований на 94% Яндекс представил единственную в мире ИИ-модель, которая заменяет систему алгоритмов Okdesk серьезно прокачал работу с атрибутами
Ещё…

Популярные теги