microsoft / microsoft/durabletask-python
Add HTTP-specific retry options to azure-functions-durable v2 call_http
还没有人认领这个 Issue。
- 主要语言
- Python
- 星标
- 40
- 派生
- 33
- 平均合并
- 2 天 2 小时
- 30 天内合并 PR
- 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 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 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
- 预计耗时
- 一周以上
- 活跃度
- 活跃
- 描述清晰度
- 描述清楚
- 新手友好度
- 45/100