microsoft / microsoft/durabletask-python
Add HTTP-specific retry options to azure-functions-durable v2 call_http
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 40
- Fork
- 33
- Merge medio
- 2g 2h
- PR unite (30g)
- 6
Descrizione
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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da DurableOrchestrationContext.call_http e dal percorso del worker HTTP in azure-functions-durable/azure/durable_functions/http/models.py e builtin.py. Traccia la serializzazione della richiesta e l’orchestratore di polling prima di confrontare la semantica di .NET HttpRetryOptions. Il lavoro è completato quando sono presenti retry configurati per gli errori, sono preservati il polling 202 e il comportamento senza opzioni, l’utilizzo è documentato e ci sono test per successo, esaurimento, esclusioni, limiti, replay e interazione con il polling.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- api, backend
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Attiva
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 45/100