Repolode
piercefreeman

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

    使用 uv 安装软件包

    uv add waymark
  2. 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 数据每日更新。

相关项目