Запись архива

Cloudflare Python Workers вышли из предварительного доступа: Python стал первым классом на платформе

После двух лет в статусе предварительной версии Cloudflare объявила о стабильном запуске Python Workers. Код выполняется через Pyodide в WebAssembly на V8, но с ограничениями — без multiprocessing и threading. Разработчикам доступен локальный симулятор pywrangler.

Обложка новости Comrad404: логотип Cloudflare и Python Workers на фоне схемы WebAssembly и V8
Обложка новости Comrad404: логотип Cloudflare и Python Workers на фоне схемы WebAssembly и V8
College of DuPage Hosts Career Fair 2016 10 | by COD Newsroom | openverse | by

Cloudflare объявила о стабильном запуске Python Workers — поддержка Python стала полноценной на платформе Cloudflare Developer Platform. Релиз подводит черту под двухлетним этапом предварительного доступа и закрепляет Python в статусе «языка первого класса» для serverless-вычислений на Edge.

Главная техническая особенность реализации — Cloudflare запускает Python-код с помощью Pyodide, порта CPython, скомпилированного в WebAssembly, внутри V8-окружения workerd. Такой подход позволяет обойти ограничения нативной интеграции Python с V8, но накладывает собственные.

Как работает Python Workers

Вместо того чтобы встраивать интерпретатор CPython напрямую в V8, Cloudflare использует Pyodide — сборку CPython для WebAssembly, работающую в изолированном окружении. Код выполняется в рантайме workerd, который базируется на V8 JavaScript-движке и лежит в основе Cloudflare Workers.

Это означает, что Python-скрипты компилируются в wasm-модули и исполняются в той же песочнице, что и JavaScript-воркеры. Для разработчика разница минимальна: API Workers доступны из Python, но с оговорками.

Ограничения WebAssembly-окружения

Cloudflare документировала ключевые ограничения Python Workers. Самое существенное — полная несовместимость с multiprocessing и threading. Внутри WebAssembly-песочницы нет поддержки нативных потоков операционной системы, поэтому любые попытки запустить параллельные вычисления через стандартную библиотеку Python приведут к ошибке.

Также стоит учитывать, что не все нативные расширения Python могут работать в wasm-окружении. Если библиотека использует C-расширения, несовместимые с WebAssembly, запуск может быть недоступен. Cloudflare рекомендует проверять совместимость в локальном симуляторе до деплоя.

Локальная разработка: pywrangler и workerd

Для локального тестирования Cloudflare выпустила инструмент pywrangler, который распространяется через PyPI под именем workers-py. Этот инструмент запускает полную локальную симуляцию стека Cloudflare: Python-код исполняется через Pyodide в WebAssembly внутри V8, который в свою очередь запускается в бинарнике workerd.

Размер бинарника workerd — 123 МБ. Как отметил Саймон Уиллисон, в его случае файл оказался в node_modules/@cloudflare/workerd-darwin-arm64/bin/workerd. Это значит, что для локальной разработки потребуется Node.js и npm, даже если вы пишете на Python.

Такой подход гарантирует, что поведение кода в локальной среде максимально близко к продакшену на Edge-нодах Cloudflare.

Кто стоит за релизом

Релиз Python Workers — результат значительных инвестиций Cloudflare в экосистему Python. В анонсе указаны три ключевых разработчика: Gyeongjae Choi, Dominik Picheta и Hood Chatham. Gyeongjae Choi и Hood Chatham — основные мейнтейнеры Pyodide, что подчеркивает глубину интеграции с этим проектом.

Cloudflare не раскрывает точное количество Python-воркеров, запущенных за время предварительного доступа, но отмечает, что обратная связь от сообщества позволила стабилизировать API и устранить критические баги.

Что это меняет для разработчиков

Для Python-разработчиков, использующих serverless-архитектуру, появление стабильных Python Workers означает возможность разворачивать код на Edge без перехода на JavaScript или TypeScript. Это особенно актуально для:

  • Микросервисов на Python, которые требуют низкой задержки
  • Обработки запросов на границе сети (Edge computing)
  • Интеграции с AI/ML-моделями, где Python — основной язык

Однако ограничения на параллельные вычисления делают Python Workers малопригодными для тяжелых вычислительных задач или операций, требующих многопоточности. Для таких сценариев Cloudflare рекомендует использовать выделенные вычисления через Workers AI или собственные GPU-ноды.

Практическая проверка совместимости

Перед деплоем Python Workers стоит проверить, какие библиотеки вашего проекта совместимы с WebAssembly. Cloudflare предоставляет список известных ограничений в документации. На практике это означает:

  • Избегать использования multiprocessing и threading
  • Проверять, что C-расширения библиотек скомпилированы для wasm
  • Использовать asyncio для конкурентного выполнения I/O-операций

Локальный симулятор pywrangler позволяет выявить несовместимости на этапе разработки, до отправки кода на Edge.

Вердикт

Cloudflare Python Workers — значимый шаг для платформы, но с оговорками. Решение выполнять Python через Pyodide в WebAssembly — компромисс между совместимостью и производительностью. Для типичных serverless-сценариев (HTTP-запросы, обработка данных, интеграции с API) этого достаточно. Для вычислительно интенсивных задач — нет.

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

Источники