在现代软件开发中,创建强大的工作流程来连接来自各种服务的 API 并处理同步和异步事件是一个常见的挑战。传统方法涉及使用队列、微服务和状态管理系统的组合来构建可扩展的应用程序。虽然有效,但这种架构带来了巨大的开销:设置和维护消息队列等基础设施、运行服务器或 lambda 函数、管理数据库中的状态以及实现复杂的错误处理机制。
如果有一种更简单、更可靠的方法来处理长时间运行的工作流程,而无需管理所有这些基础设施的麻烦,该怎么办?这就是 Durable Python 的目标,要尝试它,请注册 Beta。
长期运行流程的朴素解决方案的问题
假设您想要监控 GitHub 中的拉取请求 (PR)。每次打开新的 PR 时,您都希望创建一个专用的 Slack 频道进行讨论并发送每日提醒,直到 PR 关闭或合并。这听起来很简单,所以您可能认为可以使用基本的 Python 函数来解决它(这是 ChatGPT 生成的基本 Python 函数):
@app.route('/webhook', methods=['POST']) def github_webhook(): data = request.json if 'pull_request' in data and data['action'] == 'opened': pr_number = data['pull_request']['number'] pr_url = data['pull_request']['html_url'] # Create a new Slack channel for the PR channel_id = create_slack_channel(pr_number) send_slack_notification(channel_id, pr_number, pr_url) # Periodically check the PR status and send reminders until it's closed or merged while True: time.sleep(3600) # Wait for 1 hour before checking the status again pr_status = check_pr_status(pr_number) if pr_status == 'open': send_slack_notification(channel_id, pr_number, pr_url) else: break return jsonify({'status': 'ok'})
这段代码似乎可以处理任务,但它只适合“快乐流程”场景。在实际应用中,这种简单的方法是不够的。 while 循环依赖于连续的服务器正常运行时间,但这是无法保证的。进程可能会崩溃,服务器可能会重新启动,突然间,您的工作流程就会中断。
实际解决方案:事件驱动的应用程序
更可靠的方法涉及构建事件驱动的应用程序。在这里,您将使用队列来侦听 GitHub 事件,使用 cron 作业来发送提醒,使用数据库来存储 PR 和通道状态,以及使用函数来处理这些事件。通常,此设置在云基础设施上运行,利用 AWS Lambda 等服务进行部署和执行。
虽然这种方法可行且稳健,但它也需要大量的设置、维护和专业知识。管理基础设施、确保正常运行时间和处理错误状态需要大量资源和熟练的团队。
输入耐用的 Python:简单性与可靠性的结合
如果您可以将简单的 Python 代码与异步设计的可靠性结合起来会怎么样?如果 Python 能够保证即使进程崩溃或服务器重新启动,它也会从上次中断的地方继续执行,会怎么样?
AutoKitteh 通过 Durable Python 恰恰解决了这一挑战。使用 Durable Python,用户编写 Python 代码,而系统确保如果进程重新启动,它会从同一点继续运行。虽然存在限制(例如,长时间停机可能并不理想),但对于大多数用例,此解决方案都可以完美运行。
Durable-Python 提供什么
Durable-Python 使您无需手动管理状态,从而使您能够将工作流程编写为连续流,而不是事件驱动的状态机,而事件驱动的状态机在构建和调试方面可能具有挑战性。 AutoKitteh 作为基础设施,具有内置队列以及与外部应用程序和 API 的集成,可以轻松地在 Python 中快速开发强大的工作流程。
它是如何运作的
这并不涉及任何魔法——只是坚实的工程。 AutoKitteh 由 Temporal 提供支持,Temporal 是一个用于构建持久工作流程的框架。时态需要特定的编码方式,包括对确定性、幂等性和其他概念的理解,以确保可靠性。 AutoKitteh 抽象了这些复杂性,允许开发人员编写标准的 Python 代码。在幕后,任何具有副作用的函数都会转换为时间活动。作为开发者,您不必担心这些细节——只需专注于编写业务逻辑即可。
更多技术细节,请参阅 AutoKitteh 文档。
有费用吗?
当然,每一个抽象都有一个价格。在底层,Durable Python 会记录工作流程,以便在发生故障后进行恢复,这会产生一些存储和性能成本。
Durable Python 专为编排 API 而设计,而不是构建数据应用程序。如果您需要高性能应用程序,您应该考虑构建自定义解决方案。但是,如果您想以最少的开发和基础设施投资快速开发可靠的工作流程,Durable Python 可能是一个不错的选择。
实际应用
耐用的Python可以应用于广泛的工作流程,特别是在可靠性至关重要的领域,例如:
- API 编排 - 构建内部可靠的工作流程。
- DevOps 自动化:自动化部署管道或代码审查自动化,并保证从故障中恢复。
- ChatOps:与聊天平台集成以自动化团队通知并管理工作流程。
- MLOps:确保长时间运行的机器学习工作流程在中断的情况下仍能无缝继续。
可以在此处找到工作流程示例。
结论:更少的代码,更少的麻烦
由 AutoKitteh 提供支持的持久 Python 概念,使开发人员能够使用最少的代码构建、部署和管理可靠的工作流程自动化。持久执行和无缝恢复在幕后处理,因此您可以专注于真正重要的事情 - 您的业务逻辑。
虽然有许多优秀的工具可以实现持久性(例如 Temporal 和 Restate),但 Durable-Python 提供了一种快速、简单且经济高效的方法来实现相同的结果。
以上是耐用的 Python:构建防弹的长期运行工作流程,变得简单的详细内容。更多信息请关注PHP中文网其他相关文章!

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

该教程建立在先前对美丽汤的介绍基础上,重点是简单的树导航之外的DOM操纵。 我们将探索有效的搜索方法和技术,以修改HTML结构。 一种常见的DOM搜索方法是EX

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境