Add HTTP-specific retry options to azure-functions-durable v2 call_http
還沒有人認領這個 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 內容生成。
描述
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.
- 主要語言
- Python
- 星號
- 40
- 分支
- 33
- 平均合併
- 7 小時 54 分鐘
- 30 天內合併 PR
- 5
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
microsoft/durabletask-python 的其他 Issue
-
[Azure Functions] Simplify large-payload configuration by reusing an existing storage connection 未關閉
難度 4/5 3-5 天 新手友好度 45/100
microsoft/durabletask-python#271 ·
-
難度 4/5 3-5 天 新手友好度 35/100
microsoft/durabletask-python#269 ·
-
難度 3/5 1-2 天 新手友好度 72/100
microsoft/durabletask-python#266 ·
-
難度 5/5 一週以上 新手友好度 38/100
microsoft/durabletask-python#249 ·
-
bug Functions Parity
難度 5/5 一週以上 新手友好度 35/100
microsoft/durabletask-python#241 · 2 則留言 ·
查看 microsoft/durabletask-python 的全部 Issue
相似的 Issue
-
bug confirmed issue
難度 2/5 1-3 小時 新手友好度 75/100
open-webui/open-webui#30750 · 1 則留言 ·
-
難度 2/5 1-3 小時 新手友好度 75/100
-
enhancement
難度 2/5 1-3 小時 新手友好度 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 則留言 ·
-
難度 2/5 1-3 小時 新手友好度 70/100
-
good first issue
難度 1/5 1 小時以內 新手友好度 90/100