mcpField
D
dbos-python

dbos-python

github.com/sickn33開発49.2k74 回インストール1 日前に更新
リポジトリ

dbos-python について

DBOS の永続ワークフローで信頼性の高い Python アプリを構築する開発者向けのベストプラクティススキルです。ワークフロー構成、キュー、通信、ライフサイクル、テスト、外部クライアントを扱い、決定性と副作用の安全な処理を説明します。

主な機能

  1. 01DBOS アプリの設定と起動
  2. 02決定的なワークフローとステップの構成
  3. 03キューによる並行制御
  4. 04ワークフローのイベント、メッセージ、ストリーム利用
  5. 05DBOS アプリのテスト
  6. 06DBOSClient による接続

活用シーン

  1. 01既存の Python アプリへの DBOS 導入
  2. 02永続ワークフローとステップの実装
  3. 03キュー処理の並行数制限
  4. 04DBOS アプリのテスト

インストール

コマンドをコピーしてターミナルで実行します。

$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 アプリケーションを構築するためのガイドです。

使用する場面

次の場合に、これらのガイドラインを参照してください。

  • 既存の Python コードに DBOS を追加するとき
  • ワークフローやステップを作成するとき
  • 並行性を制御するためにキューを使用するとき
  • ワークフロー間の通信(イベント、メッセージ、ストリーム)を実装するとき
  • DBOS アプリケーションを設定して起動するとき
  • 外部アプリケーションから DBOSClient を使用するとき
  • DBOS アプリケーションをテストするとき

ランタイムの境界

サンプルはバージョンに依存する断片であり、アプリのセットアップ、インポート、ハンドラーは省略されています。インストール済みの DBOS API を確認してください。永続ワークフローの ID によって、任意の外部副作用が厳密に 1 回だけ実行されるわけではありません。チェックポイントの記録前にクラッシュすると、ステップが再実行されることがあります。支払いやメッセージには、プロバイダーの冪等性キーを使用し、照合処理を行ってください。データベースの対象と書き込みを認可し、シリアル化された入力と結果を保護してください。信頼できない 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

参考資料

制限事項

  • 上記の説明にある対象範囲と明確に一致するタスクに限り、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認してください。

コメント