← На главную

Waymark компилирует фоновые задачи вместо их повторения

05.11.2026 14:06 · hackernews

Waymark — открытая библиотека для фоновых задач, которые должны переживать перезапуск сервера, сбои отдельных действий и длительные паузы. Для хранения состояния используется Postgres, дополнительный брокер не требуется. Первый поддерживаемый язык — Python, а исполнительное ядро написано на Rust. Пакет объединяет клиентские и серверные компоненты, а встроенное веб-приложение показывает экземпляры рабочих процессов, историю вызовов и загрузку узлов.

Разработчик описывает действия обычными асинхронными функциями: обращениями к API, запросами к базе и другими операциями, которые можно повторить независимо. Рабочий процесс управляет ими через привычные условия, циклы и параллельные ветки. Поддерживаются индивидуальные повторные попытки и тайм-ауты, asyncio.gather, устойчивая к перезапускам asyncio.sleep и запуск по cron-расписанию или фиксированному интервалу. Вызов workflow из веб-сервера ставит работу в очередь Postgres, а не выполняет её внутри HTTP-запроса.

Главное отличие от Temporal и Vercel Workflow — отказ от повторного проигрывания. В таких системах код процесса запускается заново с начала, а завершённые действия возвращают сохранённые результаты, поэтому логика должна быть детерминированной. Waymark при первом запуске разбирает AST метода run(), преобразует его в промежуточное представление и затем в байт-код устойчивой виртуальной машины. Rust-runtime исполняет байт-код и сохраняет снимки состояния в Postgres. После сбоя исходный Python-код не выполняется повторно: система знает текущую позицию и продолжает с неё. Недетерминированные вызовы вроде получения времени нужно выносить в действия; компилятор сообщит о неподдерживаемой конструкции.

Авторы позиционируют проект для приложений, которым важнее простое локальное тестирование и развёртывание, чем предельная масштабируемость. Waymark не рекомендован для задач с подтверждением и обработкой быстрее 100 мс или при существенно более чем 10 тысячах одновременно координируемых действий. Ограничением является и пропускная способность Postgres.

Пока проект нельзя рекомендовать для production: спецификация быстро меняется, а обратная совместимость до 1.0.0 не гарантируется. Разработчики предлагают испытывать Waymark в побочных проектах и сообщать о сценариях, которые пока не компилируются.

Читать оригинал →