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

news/2025/1/12 13:32:15/文章来源:https://www.cnblogs.com/o-O-oO/p/18666900

背景介绍

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/868169.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站热门视频无法播放,如何解决?

针对您提到的网站热门视频无法播放的问题,我们可以从多个角度进行排查和解决。以下是一些建议,希望能帮助您快速找到问题所在并恢复正常播放功能。检查视频文件完整性:首先,请确认视频文件是否完整上传到了服务器。有时候由于网络波动或其他原因,可能导致文件传输过程中出…

服务器连接不上,如何排查和解决?

当您遇到服务器连接不上的问题时,首先需要明确具体的症状和环境。以下是详细的排查步骤和解决方案:确认网络连接:检查本地网络是否正常工作,尝试访问其他网站或服务,确保不是本地网络问题。 使用 ping 或 traceroute 命令测试与目标服务器的连通性。如果无法 ping 通,可能…

绑定域名后访问需输入账号密码,且静态资源跳转至缓存地址,如何处理?

当您绑定域名后访问网站时遇到需要输入账号密码以及静态资源跳转至缓存地址的问题,可能是由以下几种原因引起的。以下是详细的排查步骤和解决方案:确认身份验证设置:检查 Web 服务器(如 Apache、Nginx)的配置文件,确保没有启用不必要的身份验证机制。例如,Apache 的 .ht…

解决服务器卡顿及响应缓慢的问题

问题描述: 用户反映其服务器在迁移后出现了严重的卡顿现象,尤其是在执行某些特定操作(如批量打印快递单、查询会员列表)时,响应时间长达十几秒甚至二十多秒。这种情况严重影响了用户体验和工作效率。 解决方案:分析性能瓶颈:首先,使用性能分析工具(如top、htop、iosta…

解决FTP类问题:无法上传或下载文件

问题描述: 用户报告称其FTP账户虽然可以成功连接到服务器,但在尝试上传或下载文件时却失败了。这种情况严重影响了文件管理和更新工作,需要找出根本原因并解决。 解决方案:检查FTP权限设置:首先,确认FTP用户的权限是否足够。对于大多数FTP服务器,默认情况下用户具有读写…

如何解决网站伪静态设置后首页正常但其他页面404的问题

在配置伪静态规则后遇到了首页可以正常访问,但其他页面显示404错误的问题。这种情况通常与伪静态规则的配置、服务器环境或文件路径有关。以下是详细的排查步骤和解决方案:检查伪静态规则配置:确认伪静态规则是否正确配置。伪静态规则通常位于.htaccess(Apache服务器)或we…

9.水卡研究

学习资源:【【教程】手把手教你玩转IC卡-第1章-第1节-基础知识】https://www.bilibili.com/video/BV1QF411r7mw?vd_source=3e114458cfb3d0f9ecfb71a4c76c2465试验对象是本人大学水卡,因为是加密卡,需要嗅探,得要学校取水器,现在哩寒假在家,去嗅探,得开学了。 目前,就打…

ZIP伪加密解析

ZIP伪加密解析 1、zip组成 一个 ZIP 文件由三个部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。 一个zip文件由这样三个部分组成_zip 文件结构_一只独孤的程序猿的博客-CSDN博客 2、实例压缩源文件数据区: 50 4B 03 04:这是头文件标记(0x04034b50) …

国内云服务器怎么选

前言 作为一名个人开发者,无论是搭建网站、编写小程序,还是运行脚本,我几乎离不开云服务器。回想从大学时期开始接触服务器,到如今进入职场,已累积了近十年的使用经验。从最初的“乞丐版”1核0.5G服务器,到如今的“土豪版”8核16G云服务器,再到云数据库、云Redis、云存储…

如何解决网站模板无法更新及后台操作异常的问题

您好,根据您的描述,您遇到了以下两个主要问题:网站模板无法更新,即使删除旧模板并上传新模板后,仍然显示旧模板。 登录网站后台后,部分系统板块无法点击,且栏目内容混乱。为了解决这些问题,请按照以下步骤进行排查和处理: 一、网站模板无法更新清除浏览器缓存浏览器缓…

如何安全有效地修改网站后台代码而不影响正常运行

问题描述: 用户希望能够安全有效地修改网站后台代码,但又担心会因为不当操作而导致网站无法正常运行。因此,他们寻求一种既能够实现定制化开发又能保证系统稳定性的方法。 回答: 当涉及到网站后台代码的修改时,确保安全性和稳定性是非常重要的。下面是一些实用的建议和最佳…

rust学习十六.3、并发-线程之间共享数据

线程之间共享数据,即go中部分人所憎恶的方式! 然而,这个方式并非没有其优点,否则操作系统也不提供这种实现方式。闲言少序,上正文! 一、概述 * 1.当我们大谈基于信道通信时,应该指的是应用级别。如果是操作系统,应该还是会有多种措施的,否则rust的源头在哪里来着。* 2…