Перейти к содержанию

StageFlow

Фреймворк описания и исполнения пайплайнов, заданных JSON: граф узлов, пользовательские стадии, иммутабельный фрейм данных, CEL-выражения, retry и блочный try/except, параллельные ветки, циклы по списку, вложенные пайплайны и лимиты на всё это для каждого тенанта.

pip install stageflow-framework

Требуется Python 3.11+ (его требует CEL-байндинг common-expression-language).

Пайплайн в редакторе StageFlow

На картинке — редактор: отдельная веб-страница, которая рисует и отлаживает граф, пока ядро его исполняет.

С чего начать

Впервые здесь? Туториал собирает рабочий пайплайн шаг за шагом, со скриншотами из редактора. А когда пайплайны пишете уже не вы, понадобится вторая половина — Свой бэкенд: ваши стадии за HTTP-контрактом и политика, которая решает, что из них разрешено собрать и сколько это может израсходовать.

Страница О чём
Быстрый старт установка, своя стадия, запуск пайплайна
Типы узлов девять типов узлов и их поля
Модель данных фрейм, бакеты аргументов, выходы
Выражения CEL, суффикс .$, namespace vars

Свой бэкенд

Редактор не исполняет ничего: ваши стадии живут на вашем бэкенде. Пять шагов разбирают бэкенд-пример в том порядке, в каком его писали.

Страница О чём
Что такое бэкенд кто за что отвечает и что мы собираем
1. Ваши стадии register_stage, спецификации, аргументы, события, стриминг
2. Эндпоинты семь эндпоинтов, настоящая Session, SSE, CORS
3. Что разрешено собирать своя Policy на каждый вызов и как предупредить редактор
4. Во что обходится прогон reserve:, charge(), собственные счётчики
5. Чей это запрос тарифы, ключ доступа и где стоит проверка

Справочник

Страница О чём
Узел entry начало графа и переменные старта
Узел stage аргументы, выходы, consume
Узел condition развилка по CEL-выражению
Узел switch много дорог, первый подошедший case
Узел parallel конкурентность, слияние, отмена
Узел try область графа под except
Узел map область графа, исполняемая по разу на элемент
Узел subpipeline вложенный граф и его граница
Узел terminal конец прогона, result и артефакты
Ошибки retry, путь ошибки, исключения ядра
Политика ограничение стадий и типов узлов для пайплайна
Лимиты счётчики, бюджет, что тратит стадия
Типизация переменных постепенная типизация, две линии проверок
Локализация ответ на языке вызывающего, проза стадий по локалям
Управление сессией стоп, пауза, ввод, снапшоты
Пошаговая отладка остановка между узлами, правка фрейма
Встроенные стадии что идёт в комплекте
Спецификация стадии контракт в YAML-докстроке
Схема и спецификации JSON Schema и метаданные для редактора

Разработка

Страница О чём
Релизы публикация на PyPI по тегу

Исходники и задачи: github.com/leo-need-more-coffee/stageflow