Оглавление

Сообщает Cloudflare, что разработчики теперь могут использовать Python для создания долгоиграющих многозадачных приложений на платформе Workers. Это расширяет возможности оркестрации, ранее доступные только на TypeScript, открывая доступ к популярному языку для задач искусственного интеллекта и обработки данных.

Почему Python для рабочих процессов?

Python стал де-факто стандартом для областей, критически зависящих от оркестрации: пайплайны данных, искусственный интеллект и автоматизация задач. Представьте обучение языковой модели — требуется последовательно выполнять этапы разметки данных, подачи данных, ожидания выполнения модели, оценки потерь и корректировки параметров.

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

Примеры применения

Для создания AI-агентов, например помощника по закупкам продуктов, рабочий процесс может выглядеть так:

  • Ожидание ввода списка покупок пользователем
  • Компиляция списка необходимых ингредиентов
  • Сверка с остатками предыдущих недель
  • API-вызов для оформления заказа
  • Обработка платежа

Использование рабочих процессов для создания агентов на Cloudflare упрощает архитектуру и повышает вероятность успешного завершения операций благодаря повторам отдельных шагов и сохранению состояния.

Python в облачных вычислениях — это как водопровод в многоэтажном доме: все им пользуются, но мало кто задумывается о сложности интеграции. Cloudflare проделала впечатляющую работу, превратив CPython в WebAssembly через Pyodide, что открывает доступ к богатейшей экосистеме библиотек для ML и анализа данных прямо на edge-инфраструктуре. Особенно интересно, как они обошли языковой барьер между JavaScript и Python через FFI-слой — технически элегантное решение, которое могло бы стать стандартом для других платформ.

Как работают Python Workflows

Cloudflare Workflows построены на базе Workers и Durable Objects, обеспечивающих хранение метаданных рабочих процессов и информации на уровне экземпляров.

Создание рабочего процесса на Python

В основе системы лежит пользовательский Worker — WorkflowEntrypoint. Когда экземпляр рабочего процесса готов к запуску, движок вызывает метод run пользовательского Worker через RPC. В случае Python это будет Python Worker.

Пример скелета объявления рабочего процесса:

export class MyWorkflow extends WorkflowEntrypoint<Env, Params> {
async run(event: WorkflowEvent, step: WorkflowStep) {
// Steps here
}
}

Параметр WorkflowStep реализует API устойчивого выполнения, которые обеспечивают гарантию выполнения «не более одного раза». Эти API реализованы на JavaScript и должны быть доступны в контексте Python Worker.

Преодоление языкового барьера

Python Workers используют Pyodide — порт CPython в WebAssembly. Pyodide предоставляет интерфейс внешних функций (FFI) для JavaScript, позволяющий вызывать методы JavaScript из Python. Этот механизм используется не только для прямого использования привязки Workflow, но и для предоставления методов WorkflowStep на Python.

Метод run вручную оборачивается так, что WorkflowStep представляется как JsProxy вместо стандартного преобразования типов. Это позволяет адаптировать интерфейс разработки под семантику Python вместо простого экспоза JavaScript SDK.

Создание Pythonic SDK

Важной частью переноса рабочих процессов на Python стало создание интерфейса, знакомого Python-разработчикам. Вместо простого копирования JavaScript API команда адаптировала интерфейс под идиомы Python, делая разработку более естественной для сообщества.

Поддержка Python в Cloudflare развивалась поэтапно: в 2020 году Python появился в Workers через Transcrypt, в 2024 году язык напрямую интегрировали в workerd, а ранее в этом году добавили поддержку CPython вместе с пакетами из Pyodide, включая matplotlib и pandas.

Теперь с добавлением Python Workflows разработчики получают полный стек инструментов для создания надежных приложений на предпочитаемом языке.