Движок оркестрации фоновых задач, AI-агентов и долговечных рабочих процессов с SDK для Python, TypeScript, Go и Ruby и Postgres в качестве слоя надёжного хранения.
piercefreeman/waymark
Библиотека Python для надёжных фоновых процессов и действий, переживающих перезапуски и сбои; единственная инфраструктурная зависимость — Postgres.
- Звёзды
- 87
- Форки
- 5
- Открытые issues
- 92
- Последний коммит
- 15 часов назад
Что это?
Waymark — библиотека для фоновых задач, которые продолжают выполняться после перезапуска сервера, сбоев задач и во время длительных операций. Единственная инфраструктурная зависимость — Postgres, а первым поддерживаемым языком стал Python. Вы описываете действия обычными асинхронными функциями Python: они выполняются на распределённых рабочих узлах. Затем создаёте workflow, который управляет ими с помощью стандартных конструкций языка — циклов, условий и параллельных ветвей.
Workflow один раз компилируется из исходного кода метода run() на Python в промежуточное представление, после чего выполняется средой Rust, сохраняющей состояние в Postgres по мере работы. После сбоя workflow продолжает выполнение с того места, на котором остановился, а исходный код workflow при восстановлении не запускается повторно. Из-за особенностей этой архитектуры workflow должны использовать поддерживаемые конструкции; недетерминированные вызовы, например time или uuid, нужно оборачивать в отдельные действия.
В проект входит встроенное веб-приложение, которое обслуживает процесс waymark-executor и показывает экземпляры workflow, временные диаграммы их вызовов и нагрузку на узлы. Также поддерживаются политики повторных попыток и тайм-ауты для отдельных вызовов, надёжная задержка и расписания cron или с заданным интервалом. Проект пока не достиг версии 1.0, и сопровождающие не рекомендуют использовать его в production, пока не будет гарантирована обратная совместимость.
Ключевые возможности
- 01Надёжные workflow, которые после сбоев или перезапусков возобновляются с сохранённого состояния
- 02Действия выполняются на распределённых рабочих узлах; для отдельных вызовов можно задать политики повторных попыток и тайм-ауты
- 03Обычные конструкции Python: циклы, условия и asyncio.gather для параллельного выполнения
- 04Надёжная задержка, сохраняющаяся после перезапусков, — от нескольких секунд до нескольких дней
- 05Расписания cron и с заданным интервалом без дополнительной инфраструктуры
- 06Встроенное веб-приложение для просмотра экземпляров workflow и нагрузки на узлы
Сценарии использования
- Рассылка писем пакетами или вызов сторонних API с повторными попытками и распределением задач
- Запуск заданий для работы с базами данных, которые должны надёжно завершаться даже при деплоях и сбоях
- Планирование периодической синхронизации данных без отдельного брокера задач
- Оркестрация многоэтапных асинхронных процессов в приложении на Python с Postgres
Быстрый старт
- 1
Установите пакет с помощью uv
uv add waymark - 2
Запустите node, подключенный к вашей базе данных Postgres, с включенным webapp
export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor
Что важно знать
- В README рекомендуется пока не использовать проект в production: спецификация быстро меняется, а обратная совместимость до версии 1.0.0 не гарантируется.
- На данный момент поддерживается только Python.
- Не подходит для чувствительных к задержкам задач, требующих обработки менее чем за 100 мс, или координации более примерно 10 тысяч действий одновременно.
Темы
Частые вопросы
- Что такое waymark?
- Библиотека Python для надёжных фоновых процессов и действий, переживающих перезапуски и сбои; единственная инфраструктурная зависимость — Postgres. Waymark — библиотека для фоновых задач, которые продолжают выполняться после перезапуска сервера, сбоев задач и во время длительных операций. Единственная инфраструктурная зависимость — Postgres, а первым поддерживаемым языком стал Python. Вы описываете действия обычными асинхронными функциями Python: они выполняются на распределённых рабочих узлах. Затем создаёте workflow, который управляет ими с помощью стандартных конструкций языка — циклов, условий и параллельных ветвей.
- waymark можно использовать бесплатно? Какая у него лицензия?
- waymark распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- waymark всё ещё поддерживается?
- Активно поддерживается. Последний коммит в waymark — 6 нояб. 2026 г..
- Для чего можно использовать waymark?
- Рассылка писем пакетами или вызов сторонних API с повторными попытками и распределением задач Запуск заданий для работы с базами данных, которые должны надёжно завершаться даже при деплоях и сбоях Планирование периодической синхронизации данных без отдельного брокера задач Оркестрация многоэтапных асинхронных процессов в приложении на Python с Postgres
- Как установить waymark?
- Установите пакет с помощью uv: uv add waymark Запустите node, подключенный к вашей базе данных Postgres, с включенным webapp: export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor
- Где скачать waymark?
- Исходный код и инструкции по установке — на GitHub: https://github.com/piercefreeman/waymark
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Библиотека Python, которая добавляет в приложение надёжные рабочие процессы и очереди задач с сохранением состояния в Postgres.
Библиотека-планировщик задач и очередь задач для Python с триггерами cron, интервалов, календарных и разовых запусков, а также поддержкой постоянных хранилищ заданий.
Распределённая очередь задач для Python: выполняет фоновые задания и распределяет работу между воркерами через брокеры сообщений.
Библиотека Go для распределённых очередей задач на базе Redis с планированием, повторами, приоритетами и веб-интерфейсом.
Надёжный движок workflow для запуска пошаговых функций, фоновых задач и AI-workflow на serverless-платформах, серверах и edge-инфраструктуре — с повторами и управлением потоком выполнения.