microsoft / microsoft/durabletask-python

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

Aberta
#268 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Linguagem predominante
Python
Estrelas
40
Forks
33
Merge médio
2d 2h
PRs com merge (30d)
6

Descrição

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

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece com DurableOrchestrationContext.call_http e o caminho do worker HTTP em azure-functions-durable/azure/durable_functions/http/models.py e builtin.py. Rastreie a serialização da requisição e o orquestrador de polling antes de comparar a semântica de .NET HttpRetryOptions. Considera-se concluído quando houver retries de falha configurados, o polling 202 e o comportamento sem opções forem preservados, o uso estiver documentado e houver testes para sucesso, esgotamento, exclusões, limites, replay e interação com o polling.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
api, backend
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Ativa
Clareza
Claramente especificada
Facilidade para iniciantes
45/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.