首页 > 编程语言 >【DBOS Transact】Python 持久执行工具,轻量而强大

【DBOS Transact】Python 持久执行工具,轻量而强大

时间:2025-01-12 13:32:30浏览次数:1  
标签:Python Transact dbos step DBOS 执行 轻量 app

背景介绍

如果工作中我们要运行的程序分几个步骤去执行,如果当中间某个步骤执行失败的时候,我们不得不重新全部执行一遍,其实这样很费事费力,因为每次都是从头开始执行,而且这种代码放到生产中也会出现不稳定的情况,毕竟基础硬件的底层也会出现问题,比如当网络、操作系统等出现问题时,你所定时执行的脚本或程序就会出现问题,针对此问题,我们今天就介绍一款轻量级能持久执行的Python库DBOS Transact 来解决这个问题。

持久执行意味着我们程序能够灵活应对任何故障,如果它被中断或崩溃,所有工作流将自动从最后完成的步骤恢复,无论我们尝试崩溃多少次,它总是从上次中断的地方恢复。

说一下这个库的简单原理,在后台DBOS Transact 的工作原理是将程序的执行状态,就是当前正在执行的工作流以及目前完成的步骤存储在了数据库中,因此我们只需要使用一个Postgres数据库即可,大家不要觉得安装数据库很复杂,现在已经非常简单了,使用docker分分钟搞定。

DBOS Transact还有一些更酷的功能,包括:

计划作业 : 每个时间间隔恰好运行一次工作流。

恰好一次事件处理 : 使用工作流处理传入事件(例如,来自 Kafka 主题)恰好一次。

可观测性 : 所有工作流都会自动发出 OpenTelemetry 跟踪。

说了这么多,让我们动手吧
Let's 开始

先安装

pip install dbos
dbos init --config

然后,使用这个简单的程序(需要 Postgres)尝试一下:

from fastapi import FastAPI
from dbos import DBOS

app = FastAPI()
DBOS(fastapi=app)

@DBOS.step()
def step_one():
    print("Step one completed!")

@DBOS.step()
def step_two():
    print("Step two completed!")

@DBOS.workflow()
def dbos_workflow():
    step_one()
    for _ in range(5):
        print("Press Control + \ to stop the app...")
        DBOS.sleep(1)
    step_two()

@app.get("/")
def fastapi_endpoint():
    dbos_workflow()

将以上程序保存到文件中,配置连接到Postgres数据库,然后启动它。然后再浏览器中启动工作流,当出现提示时我们强制退出应用程序,结果如我们所料,它应该中途崩溃了,完成了第一步,但没有完成第二步,然后当我们重新启动程序,它会从中断的地方恢复直接完成第二步,以上就是基本的使用,更多的使用请参考文档:

https://docs.dbos.dev

原创 python运维技术

标签:Python,Transact,dbos,step,DBOS,执行,轻量,app
From: https://www.cnblogs.com/o-O-oO/p/18666900

相关文章

  • 2025毕设python在线美食点评系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于美食点评系统的研究,现有研究主要集中在大型综合平台的整体运营和功能优化方面,如大众点评、美团等平台的宏观运营模式、营销策略等......
  • 车道偏离预警(LDW)、车道保持辅助(LKA)、车道线检测-OpenCV、Python-滑动窗口、透视变
    车道偏离预警、车道保持辅助及车道线检测系统引言一、代码和文件1.项目文件说明2.项目的依赖包和环境3.运行代码二、整体代码逻辑1.相机校准2.车道检测/跟踪3.车道状态分析4.车道映射三、相机校准1.计算摄像机矩阵和失真系数四、图像和视频的处理步骤1.进行......
  • yolov8旋转目标检测部署教程(附代码c++_python)
    文章目录简介旋转目标检测的重要性挑战与难点技术方法数据增强特征提取旋转敏感的损失函数多任务学习先验知识引导后处理策略现有框架和技术未来趋势1.准备环境2.模型转换为ONNX格式导入库转换为ONNX3.ONNX模型部署导入库加载ONNX模型预处理后处理推理过程可视化结......
  • Python时间序列分析工具Aeon使用指南
    Aeon 是一个专注于时间序列处理的开源Python库,其设计理念遵循scikit-learn的API风格,为数据科学家和研究人员提供了一套完整的时间序列分析工具。该项目保持活跃开发,截至2024年仍持续更新。Aeon提供了以下主要功能模块:时间序列分类-支持多种分类算法实现-包含基于间隔、字典......
  • python 异常值检测与处理——3倍标准差法
    目录一、概述二、代码实现三、结果展示一、概述  3σ3σ3σ原则是一种基于正态分布的统计学原则,用于判断数据中的异常值。根据......
  • Python 2和Python 3之间有哪些主要区别?
    Python2和Python3是Python编程语言的两个主要版本,它们在语法、功能和性能上存在显著差异。这些差异不仅影响了代码的编写方式,还对程序的运行效率和可维护性产生了深远的影响。以下将详细阐述Python2与Python3之间的主要区别,并提供相应的示例代码。1.打印函数的变化在Pyt......
  • python中如何在装饰器中使用闭包来保存状态?
    在Python中,装饰器是一种强大的工具,可以用来增强函数或方法的功能,而无需修改其原始代码。装饰器本质上是一个闭包,它接收一个函数作为参数,并返回一个新的函数。闭包的一个重要特性是能够保存其外部作用域中的变量,即使外部函数已经执行完毕。这种特性使得闭包非常适合用于装饰器中......
  • Python程序题:恺撒密码
    恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬......
  • 【Python应用】Python实现压缩和解压缩
    压缩和解压缩是日常常用的操作,不管是windows上图形界面的操作,还是linux上用命令来进行压缩解压缩,总的而言都还是比较方便的。但用代码来实现就没做过,近期也得实现代码压缩与解压缩操作,所以就抽时间来研究一下。一、zip文件压缩和解压缩实现importosimportzipfile#函数功......
  • 基于Python的南京某高校校园外卖点餐系统设计和实现
    ......