microsoft / microsoft/durabletask-python

Add HTTP-specific retry options to azure-functions-durable v2 call_http

オープン
#268 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
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.
  • DurableHttpRequest neither accepts nor serializes a retry policy or retryable-status-code list.
  • builtin_http_activity returns 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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. 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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。