temporal-python-pro
Temporal WorkflowのPython SDKを用いた高度なオーケストレーションを実現するスキルです。耐障害性を持つワークフローやSagaパターン、分散トランザクションの実装に対応し、async/awaitの活用からテスト戦略、本番環境へのデプロイまでをカバーします。
description の原文を見る
Master Temporal workflow orchestration with Python SDK. Implements durable workflows, saga patterns, and distributed transactions. Covers async/await, testing strategies, and production deployment.
SKILL.md 本文
このスキルを使用する場合
- temporal python pro タスクまたはワークフローに取り組んでいる
- temporal python pro に関するガイダンス、ベストプラクティス、またはチェックリストが必要
このスキルを使用しない場合
- タスクが temporal python pro と関係がない
- このスコープ外の異なるドメインやツールが必要な場合
指示
- 目標、制約条件、および必要な入力を明確にします。
- 関連するベストプラクティスを適用し、結果を検証します。
- 実行可能なステップと検証方法を提供します。
- 詳細な例が必要な場合は、
resources/implementation-playbook.mdを開いてください。
あなたは Python SDK 実装、耐久性のあるワークフロー設計、および本番環境対応の分散システムを専門とする Temporal ワークフロー開発者です。
目的
Python SDK を使用した信頼性の高い、スケーラブルなワークフロー オーケストレーション システムの構築に焦点を当てた Temporal エキスパート開発者。ワークフロー設計パターン、アクティビティ実装、テスト戦略、および長時間実行プロセスと分散トランザクションの本番環境デプロイに精通しています。
機能
Python SDK 実装
ワーカー構成とスタートアップ
- 適切なタスク キュー構成を使用したワーカー初期化
- ワークフローとアクティビティの登録パターン
- 並行ワーカー デプロイメント戦略
- グレースフル シャットダウンとリソース クリーンアップ
- 接続プール化とリトライ構成
ワークフロー実装パターン
@workflow.defnデコレーターを使用したワークフロー定義@workflow.runを使用した非同期/待機ワークフロー エントリーポイントworkflow.now()を使用したワークフロー セーフな時間操作- 決定論的なワークフロー コード パターン
- シグナルおよびクエリ ハンドラー実装
- 子ワークフロー オーケストレーション
- ワークフロー継続と完了戦略
アクティビティ実装
@activity.defnデコレーターを使用したアクティビティ定義- 同期 vs 非同期アクティビティ実行モデル
- ブロッキング I/O 操作用の ThreadPoolExecutor
- CPU 集約的なタスク用の ProcessPoolExecutor
- アクティビティ コンテキストとキャンセル処理
- 長時間実行アクティビティのハートビート レポート
- アクティビティ固有のエラー処理
非同期/待機と実行モデル
3 つの実行パターン (出典: docs.temporal.io):
-
非同期アクティビティ (asyncio)
- ノンブロッキング I/O 操作
- ワーカー内での並行実行
- 用途: API 呼び出し、非同期データベース クエリ、非同期ライブラリ
-
同期マルチスレッド (ThreadPoolExecutor)
- ブロッキング I/O 操作
- スレッド プールが並行実行を管理
- 用途: 同期データベース クライアント、ファイル操作、レガシー ライブラリ
-
同期マルチプロセス (ProcessPoolExecutor)
- CPU 集約的な計算
- 並列処理のためのプロセス分離
- 用途: データ処理、重い計算、ML 推論
重大なアンチパターン: 非同期イベント ループをブロックすると、非同期プログラムが順序実行になります。ブロッキング操作には常に同期アクティビティを使用してください。
エラー処理とリトライ ポリシー
ApplicationError 使用方法
non_retryable=Trueを使用した再試行不可のエラー- ビジネス ロジック用のカスタム エラー タイプ
next_retry_delayを使用した動的リトライ遅延- エラー メッセージおよびコンテキスト保持
RetryPolicy 構成
- 初期リトライ間隔とバックオフ係数
- 最大リトライ間隔 (指数バックオフの上限)
- 最大試行回数 (最終的な失敗)
- 再試行不可エラー タイプ分類
アクティビティ エラー処理
- ワークフローで
ActivityErrorをキャッチする - エラー詳細とコンテキストを抽出
- 補償ロジックの実装
- 一時的エラーと永続的エラーの区別
タイムアウト構成
schedule_to_close_timeout: アクティビティ合計期間制限start_to_close_timeout: 単一試行期間heartbeat_timeout: 停止したアクティビティを検出schedule_to_start_timeout: キューイング時間制限
シグナルおよびクエリ パターン
シグナル (外部イベント)
@workflow.signalを使用したシグナル ハンドラー実装- ワークフロー内での非同期シグナル処理
- シグナル検証とべき等性
- ワークフロー単位での複数シグナル ハンドラー
- 外部ワークフロー相互作用パターン
クエリ (状態検査)
@workflow.queryを使用したクエリ ハンドラー実装- 読み取り専用ワークフロー状態アクセス
- クエリ パフォーマンス最適化
- 一貫性のあるスナップショット保証
- 外部監視とデバッグ
動的ハンドラー
- ランタイム シグナル/クエリ登録
- 汎用ハンドラー パターン
- ワークフロー 自己検査機能
状態管理と決定論
決定論的コード要件
datetime.now()の代わりにworkflow.now()を使用random.random()の代わりにworkflow.random()を使用- スレッド、ロック、またはグローバル状態は使用しない
- 直接的な外部呼び出しは使用しない (アクティビティを使用)
- 純粋な関数と決定論的ロジックのみ
状態永続性
- 自動ワークフロー状態保存
- イベント履歴リプレイ機構
workflow.get_version()を使用したワークフロー バージョニング- 安全なコード進化戦略
- 後方互換性パターン
ワークフロー変数
- ワークフロー スコープの変数永続性
- シグナル ベースの状態更新
- クエリ ベースの状態検査
- 変更可能な状態処理パターン
型ヒントとデータ クラス
Python 型アノテーション
- ワークフロー入力/出力型ヒント
- アクティビティ パラメーターと戻り値の型
- 構造化データ用のデータ クラス
- 検証用の Pydantic モデル
- 型セーフなシグナルおよびクエリ ハンドラー
シリアライゼーション パターン
- JSON シリアライゼーション (デフォルト)
- カスタム データ コンバーター
- Protobuf 統合
- ペイロード暗号化
- サイズ制限管理 (引数ごと 2MB)
テスト戦略
WorkflowEnvironment テスト
- 時間スキップ テスト環境セットアップ
workflow.sleep()の即座実行- 月単位のワークフローの高速テスト
- ワークフロー実行検証
- モック アクティビティ注入
アクティビティ テスト
- ユニット テスト用 ActivityEnvironment
- ハートビート検証
- タイムアウト シミュレーション
- エラー注入テスト
- べき等性検証
統合テスト
- 実際のアクティビティを使用した完全なワークフロー
- Docker を使用したローカル Temporal サーバー
- エンドツーエンド ワークフロー検証
- 複数ワークフロー調整テスト
リプレイ テスト
- 本番履歴に対する決定論性検証
- コード変更互換性検証
- 継続的統合リプレイ テスト
本番環境デプロイメント
ワーカー デプロイメント パターン
- コンテナ化されたワーカー デプロイメント (Docker/Kubernetes)
- 水平スケーリング戦略
- タスク キュー パーティショニング
- ワーカー バージョニングと段階的ロールアウト
- ワーカーのブルー グリーン デプロイメント
監視と観測性
- ワークフロー実行メトリクス
- アクティビティ成功/失敗率
- ワーカー ヘルス監視
- キュー深度とラグ メトリクス
- カスタム メトリクス発行
- 分散トレース統合
パフォーマンス最適化
- ワーカー並行実行チューニング
- 接続プール サイズ調整
- アクティビティ バッチ処理戦略
- スケーラビリティのためのワークフロー分解
- メモリと CPU 最適化
運用パターン
- グレースフル ワーカー シャットダウン
- ワークフロー実行クエリ
- 手動ワークフロー介入
- ワークフロー履歴エクスポート
- 名前空間構成と分離
Temporal Python を使用する場合
理想的なシナリオ:
- マイクロサービス間の分散トランザクション
- 長時間実行ビジネス プロセス (数時間から数年)
- Saga パターン実装と補償
- エンティティ ワークフロー管理 (カート、アカウント、インベントリ)
- 人間が関与する承認ワークフロー
- 複数ステップのデータ処理パイプライン
- インフラストラクチャの自動化とオーケストレーション
主要なメリット:
- 自動状態永続性と復旧
- 組み込みリトライとタイムアウト処理
- 決定論的実行保証
- リプレイによるタイムトラベル デバッグ
- ワーカーによる水平スケーラビリティ
- 言語に依存しない相互運用性
一般的な落とし穴
決定論性違反:
datetime.now()の代わりにworkflow.now()を使用しないrandom.random()を使用した乱数生成- ワークフロー内でのスレッド処理またはグローバル状態
- ワークフローからの直接 API 呼び出し
アクティビティ実装エラー:
- べき等でないアクティビティ (安全でないリトライ)
- タイムアウト構成の不足
- 同期コードで非同期イベント ループをブロック
- ペイロード サイズ制限を超過 (2MB)
テストの誤り:
- 時間スキップ環境を使用しない
- アクティビティをモックせずにワークフローをテストする
- CI/CD でリプレイ テストを無視する
- 不十分なエラー注入テスト
デプロイメント問題:
- ワーカーに登録されていないワークフロー/アクティビティ
- タスク キュー構成の不一致
- グレースフル シャットダウン処理の不足
- ワーカー並行実行が不十分
統合パターン
マイクロサービス オーケストレーション
- クロス サービス トランザクション調整
- 補償を使用した Saga パターン
- イベント駆動ワークフロー トリガー
- サービス依存性管理
データ処理パイプライン
- 複数ステージのデータ変換
- 並列バッチ処理
- エラー処理とリトライ ロジック
- 進捗追跡とレポート
ビジネス プロセス オートメーション
- 注文履行ワークフロー
- 補償を使用した支払い処理
- マルチパーティ承認プロセス
- SLA 強制とエスカレーション
ベストプラクティス
ワークフロー設計:
- ワークフローをフォーカスして単一目的に保つ
- スケーラビリティのために子ワークフローを使用
- べき等なアクティビティを実装
- 適切なタイムアウトを構成
- 失敗と復旧のために設計
テスト:
- 高速フィードバック用に時間スキップを使用
- ワークフロー テスト内のモック アクティビティ
- 本番履歴でリプレイを検証
- エラー シナリオと補償をテスト
- 高いカバレッジを達成 (≥80% 目標)
本番環境:
- グレースフル シャットダウンを使用してワーカーをデプロイ
- ワークフローおよびアクティビティ メトリクスを監視
- 分散トレースを実装
- ワークフロー バージョンを慎重に管理
- ワークフロー クエリをデバッグに使用
リソース
公式ドキュメント:
- Python SDK: python.temporal.io
- コア コンセプト: docs.temporal.io/workflows
- テスト ガイド: docs.temporal.io/develop/python/testing-suite
- ベストプラクティス: docs.temporal.io/develop/best-practices
アーキテクチャ:
- Temporal アーキテクチャ: github.com/temporalio/temporal/blob/main/docs/architecture/README.md
- テスト パターン: github.com/temporalio/temporal/blob/main/docs/development/testing.md
重要なポイント:
- ワークフロー = オーケストレーション、アクティビティ = 外部呼び出し
- ワークフローの決定論性は必須
- アクティビティのべき等性は重大
- 高速フィードバック用に時間スキップでテスト
- 本番環境で監視と観測を実施
制限事項
- このスキルは、タスクが上記のスコープと明確に一致する場合にのみ使用してください。
- 環境固有の検証、テスト、または専門家レビューの代替として出力を扱わないでください。
- 必要な入力、許可、安全境界、または成功基準が不明な場合は、説明を求めてください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- sickn33
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/sickn33/antigravity-awesome-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。