microsoft / microsoft/durabletask-python
Add HTTP-specific retry options to azure-functions-durable v2 call_http
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 40
- フォーク
- 33
- 平均マージ
- 2日 2時間
- マージ済み PR(30日)
- 6
説明
Add configurable, durable HTTP failure retries to the azure-functions-durable v2 compatibility package in this repository. This is the Python v2 follow-up to Azure/azure-functions-durable-extension#1984, not a request for generic activity retry support.
Current behavior
Checked azure-functions-durable==2.0.0rc1 (azurefunctions-v2.0.0rc1):
DurableOrchestrationContext.call_http(method, uri, content=None, headers=None, token_source=None, is_raw_str=False)has no HTTP retry parameter and schedules the built-in HTTP polling sub-orchestration.DurableHttpRequestneither accepts nor serializes a retry policy or retryable-status-code list.builtin_http_activityreturns HTTP error responses rather than treating selected statuses as retryable failures.- The polling orchestrator calls activities without a retry policy and repeats only for HTTP 202 responses with a Location header.
This package executes HTTP through worker-side built-ins rather than the extension's native HTTP action. Retry support must be implemented in that worker path, not just added to a host-bound JSON field.
Acceptance Criteria
- Expose HTTP-specific retry configuration on
call_http, including first retry interval, maximum attempts, backoff coefficient, maximum retry interval, retry timeout, and retryable HTTP status codes. - Carry the configuration through the request model/serialization and apply durable retries to selected HTTP statuses and retryable transport failures.
- Define and document status-code defaults consistent with .NET
HttpRetryOptions(an omitted/empty status-code list retries 4xx/5xx responses when a retry policy is supplied). - Preserve existing behavior when retry options are omitted, and keep HTTP 202 polling distinct from failure retries.
- Add coverage for retry-then-success, exhausted attempts, excluded status codes, backoff/timeout limits, replay, and interaction with 202 polling.
- Document usage and any intentional differences from .NET HTTP retry semantics.
Related
- Original cross-language tracker: Azure/azure-functions-durable-extension#1984.
- Equivalent Node v4 work: microsoft/durabletask-js#367.
- .NET HttpRetryOptions reference implementation.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
DurableOrchestrationContext.call_http と、azure-functions-durable/azure/durable_functions/http/models.py および builtin.py にある HTTP worker パスから始めます。.NET HttpRetryOptions のセマンティクスを比較する前に、リクエストのシリアライズと polling orchestrator を追跡します。完了の条件は、設定された失敗時のリトライ、202 polling とオプション未指定時の動作の維持、使用方法のドキュメント化、および成功、試行回数上限到達、除外、制限、replay、polling との相互作用を対象とするテストです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- api, backend
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 活発
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 45/100