Repolode
piercefreeman

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. 1

    Установите пакет с помощью uv

    uv add waymark
  2. 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 обновляется ежедневно.

Похожие проекты

Движок оркестрации фоновых задач, AI-агентов и долговечных рабочих процессов с SDK для Python, TypeScript, Go и Ruby и Postgres в качестве слоя надёжного хранения.

8,2 тыс.+30 за неделю535GoMITАктивно поддерживаетсяОбновлён 19 часов назад

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

7,7 тыс.+12 за неделю823PythonMITАктивно поддерживаетсяОбновлён 12 дней назад

Распределённая очередь задач для Python: выполняет фоновые задания и распределяет работу между воркерами через брокеры сообщений.

29,1 тыс.+31 за неделю5,3 тыс.PythonOtherАктивно поддерживаетсяОбновлён позавчера

Библиотека Go для распределённых очередей задач на базе Redis с планированием, повторами, приоритетами и веб-интерфейсом.

13,8 тыс.+12 за неделю991GoMITОбновлён 19 дней назад

Надёжный движок workflow для запуска пошаговых функций, фоновых задач и AI-workflow на serverless-платформах, серверах и edge-инфраструктуре — с повторами и управлением потоком выполнения.

6 тыс.+19 за неделю390GoOtherОбновлён 19 часов назад