面向后台任务、AI 智能体和持久化工作流的编排引擎,支持 Python、TypeScript、Go 和 Ruby。
piercefreeman/waymark
基于 Postgres 的 Python 持久化后台工作流库,任务可在服务重启或崩溃后恢复,无需额外基础设施。
- Star
- 87
- Fork
- 5
- 未关闭 Issue
- 92
- 最近提交
- 15小时前
这是什么?
Waymark 是一个用于构建后台任务的库,任务在服务器重启、任务崩溃或长时间运行时仍能继续执行。它唯一依赖的基础设施是 Postgres,目前首先支持 Python。开发者用普通的 async Python 函数定义 action,由工作节点分布式执行;再用循环、条件分支、并行等常规控制流编写 workflow 来编排这些 action。
Workflow 的 run() 方法会先被编译为中间表示,再由 Rust 运行时执行,并在执行过程中把状态快照保存到 Postgres。工作流崩溃后可从中断处恢复,恢复时不会重新执行原始 Python 代码。因此 workflow 需要使用受支持的写法,例如 time、uuid 等非确定性调用需要包装成显式的 action。
项目内置 Web 界面,由 waymark-executor 提供,可查看每个工作流实例、调用时间线和节点负载。它还支持按调用设置重试策略和超时、持久化的 sleep,以及 cron 或固定间隔的定时调度。项目目前仍处于 1.0 之前的阶段,维护者建议暂不要用于生产环境。
核心功能
- 01工作流在崩溃或重启后可从上次状态恢复
- 02Action 分布式执行,可按调用设置重试策略和超时
- 03支持普通 Python 控制流,包括循环、条件分支和 asyncio.gather 并行
- 04持久化 sleep,时长从几秒到几天都能在重启后保持
- 05支持 cron 和固定间隔定时调度,无需额外基础设施
- 06内置 Web 界面,可查看工作流实例和节点负载
适用场景
- 批量发送邮件或调用第三方 API,需要重试和并行扇出
- 数据库任务需要在部署或崩溃后仍可靠完成
- 无需独立消息中间件即可定时执行数据同步
- 在基于 Postgres 的 Python 应用中编排多步异步流程
快速上手
- 1
使用 uv 安装软件包
uv add waymark - 2
连接 Postgres 数据库并启用 Web 应用启动节点
export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor
使用前须知
- README 表示目前不应用于生产环境,因为规范变化较快且 1.0.0 之前不保证向后兼容。
- 目前仅支持 Python。
- 不适合需要低于 100 毫秒响应的延迟敏感任务,或同时协调超过约 1 万个动作的场景。
标签
常见问题
- waymark 是什么?
- 基于 Postgres 的 Python 持久化后台工作流库,任务可在服务重启或崩溃后恢复,无需额外基础设施。 Waymark 是一个用于构建后台任务的库,任务在服务器重启、任务崩溃或长时间运行时仍能继续执行。它唯一依赖的基础设施是 Postgres,目前首先支持 Python。开发者用普通的 async Python 函数定义 action,由工作节点分布式执行;再用循环、条件分支、并行等常规控制流编写 workflow 来编排这些 action。
- waymark 可以免费使用吗?用的什么许可证?
- waymark 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- waymark 还在维护吗?
- 活跃维护中。waymark 最近一次提交是在 2026年11月6日。
- waymark 适合用来做什么?
- 批量发送邮件或调用第三方 API,需要重试和并行扇出 数据库任务需要在部署或崩溃后仍可靠完成 无需独立消息中间件即可定时执行数据同步 在基于 Postgres 的 Python 应用中编排多步异步流程
- waymark 怎么安装和运行?
- 使用 uv 安装软件包: uv add waymark 连接 Postgres 数据库并启用 Web 应用启动节点: 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
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个 Python 库,用 Postgres 为程序添加可持久化的工作流和任务队列。
Python 任务调度与任务队列库,支持 Cron、间隔、日历和一次性等多种触发方式。
面向 Python 的分布式任务队列,用于在多个工作进程和消息代理之间执行后台任务与定时任务。
基于 Redis 的 Go 分布式任务队列库,支持定时任务、失败重试和优先级队列。
可在 Serverless、服务器或边缘环境运行的持久化工作流引擎,支持带步骤的函数与 AI 工作流。