编程学习网 > 编程语言 > Python > DBOS:让 Python 工作流持久化,轻松应对中断与重试
2025
08-07

DBOS:让 Python 工作流持久化,轻松应对中断与重试

DBOS 提供轻量级的持久工作流和队列,只需几行代码即可添加到 Python 应用中,它与 Airflow 和 Celery 等热门开源工作流和队列库相似,但更注重可靠性和故障自动恢复功能。

DBOS 的核心目标是使其轻量且灵活,以便能够以最少的工作量将其添加到现有应用中,运行持久工作流和队列所需的一切都包含在这个 Python 库中,无需管理单独的工作流服务器:只需安装该库,并将其连接到 Postgres 数据库(用于存储工作流/队列状态)即可开始使用。

什么情况下使用?

如果你的应用程序需要可靠地处理故障,则应该考虑使用 DBOS,例如,你可能正在构建一个支付服务,即使服务器在运行过程中崩溃,也必须能够可靠地处理交易;或者你正在构建一个长期运行的数据管道,该管道需要从检查点恢复,而不是在中断时从头开始,DBOS 工作流可以简化这些操作:在数据库中设置检查点,并自动从故障中恢复

持久的工作流程

DBOS 工作流通过在 Postgres 中设置程序状态检查点来增强程序的持久性,如果程序发生故障,重新启动时,所有工作流将自动从上次完成的步骤恢复,我们可以通过将普通函数修改为工作流和步骤,将持久工作流添加到现有的 Python 程序中:

工作流只是一个普通的 Python 函数!可以以任何我们喜欢的方式调用它——从 FastAPI 处理程序、响应事件,或者任何通常调用函数的地方,工作流和步骤可以是同步的,也可以是异步的,两者都具有一流的支持(就像在 FastAPI 中一样),DBOS 还内置了对 cron 调度的支持,只需在工作流中添加一个 @DBOS.scheduled(''') 装饰器即可,因此无需使用其他工具即可实现此功能。

持久队列

DBOS 队列可帮助我们在后台持久运行任务,类似于 Celery,但更注重持久性和故障恢复能力,可以将持久工作流中的任务(可以是单个步骤或整个工作流)加入队列,然后我们的某个进程将拾取该任务执行,DBOS 负责管理任务的执行:它保证任务完成,并且即使应用程序中断,调用者也能获得结果而无需重新提交。
队列还提供流控制(类似于 Celery),因此可以按队列或按进程限制任务的并发数,还可以设置任务超时、限制队列任务的执行频率、删除重复任务或设置任务的优先级。
只需几行代码即可将队列添加到工作流中。它们不需要单独的队列服务或消息代理,只需要数据库即可。

以上就是“DBOS:让 Python 工作流持久化,轻松应对中断与重试的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取