mcpField
D
dbos-python

dbos-python

github.com/sickn33开发49.2k74 次安装1 天前更新
代码仓库

关于 dbos-python

面向使用 DBOS 持久化工作流构建可靠 Python 应用的开发者最佳实践技能。内容涵盖工作流结构、队列、通信、生命周期、测试和外部客户端,并指导确定性设计及副作用的安全处理。

主要功能

  1. 01配置并启动 DBOS 应用
  2. 02组织确定性工作流与步骤
  3. 03通过队列控制并发
  4. 04使用工作流事件、消息和流
  5. 05测试 DBOS 应用
  6. 06通过 DBOSClient 连接

适用场景

  1. 01将 DBOS 引入现有 Python 应用
  2. 02实现持久化工作流与步骤
  3. 03限制排队任务的并发
  4. 04测试 DBOS 应用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill dbos-python

安装后在 Claude Code 中输入/dbos-python确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CLAUDE.md
AGENTS.md
references/
comm-events.md
client-setup.md
advanced-versioning.md
_sections.md
advanced-async.md
client-enqueue.md
advanced-patching.md
comm-messages.md
comm-streaming.md
pattern-idempotency.md
lifecycle-fastapi.md
pattern-debouncing.md
lifecycle-config.md
pattern-classes.md
pattern-scheduled.md
queue-concurrency.md
pattern-sleep.md
queue-listening.md
queue-priority.md
step-basics.md
queue-basics.md
queue-deduplication.md
step-retries.md
queue-rate-limiting.md
queue-partitioning.md
step-transactions.md
workflow-background.md
workflow-control.md

详细介绍

DBOS Python 最佳实践

使用 DBOS 持久化工作流构建可靠、容错的 Python 应用指南。

适用场景

在以下情况下参考这些指南:

  • 将 DBOS 添加到现有 Python 代码中
  • 创建工作流和步骤
  • 使用队列控制并发
  • 实现工作流通信(事件、消息、流)
  • 配置并启动 DBOS 应用
  • 在外部应用中使用 DBOSClient
  • 测试 DBOS 应用

运行时边界

示例是对版本敏感的代码片段,省略了应用设置、导入和处理程序;请确认已安装的 DBOS API。持久化工作流的标识并不能确保任意外部副作用恰好执行一次:在检查点写入之前发生崩溃后,步骤可能会重复执行。对于付款和消息,请使用提供商的幂等键并进行对账。授权数据库目标和写入操作,保护序列化输入和结果,切勿反序列化不可信的 pickle 数据。API 路由需要身份验证、租户所有权校验、Webhook 签名和重放验证,以及有界等待时间。执行会造成破坏的测试重置时,必须使用专用且可丢弃的系统数据库;仅凭变量名称无法证明目标正确。

按优先级划分的规则类别

优先级类别影响前缀
1生命周期严重lifecycle-
2工作流严重workflow-
3步骤高step-
4队列高queue-
5通信中comm-
6模式中pattern-
7测试低至中test-
8客户端中client-
9高级低advanced-

关键规则

DBOS 配置和启动

DBOS 应用必须在主函数中配置并启动 DBOS:

import os
from dbos import DBOS, DBOSConfig

@DBOS.workflow()
def my_workflow():
    pass

if __name__ == "__main__":
    config: DBOSConfig = {
        "name": "my-app",
        "system_database_url": os.environ.get("DBOS_SYSTEM_DATABASE_URL"),
    }
    DBOS(config=config)
    DBOS.launch()
工作流和步骤结构

工作流由步骤组成。任何执行复杂操作或访问外部服务的函数都必须是一个步骤:

@DBOS.step()
def call_external_api():
    return requests.get("https://api.example.com").json()

@DBOS.workflow()
def my_workflow():
    result = call_external_api()
    return result
关键限制
  • 不要在步骤中调用 DBOS.start_workflow 或 DBOS.recv
  • 不要使用线程启动工作流——请使用 DBOS.start_workflow 或队列
  • 工作流必须具有确定性——非确定性操作应放在步骤中
  • 不要在工作流或步骤中创建或更新全局变量

使用方法

阅读各规则文件,了解详细说明和示例:

references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md

参考资料

限制

  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为针对特定环境进行验证、测试或专家审查的替代品。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请暂停并请求澄清。

评论

支持 Markdown