Pular para o conteúdo

Contrapressão

Uma fonte mais rápida que o consumo: sem teto, a memória cresce até o processo morrer. Com teto, a falha é visível.

Quando pedidos chegam mais depressa do que o laço atende, eles se acumulam na fila de prontas. Sem limite, a fila cresce até o processo ser morto por falta de memória — horas depois, e sem mensagem que aponte a causa. O teto troca essa morte lenta por uma recusa imediata.

dataforge
adopt Arcane.Laco as L

laco := L.novo(2)                              // no máximo 2 esperando
aceitos := [L.agendar(laco, lambda => void) cycle i in range(5)]
assert aceitos is [yes, yes, no, no, no]
assert L.estatisticas(laco)["recusadas"] is 3
Quem recebe o noFaz
um servidorresponde 503 com Retry-After — o cliente tenta depois
um leitor de filapara de ler da fonte até a fila baixar
um produtor de fibrasusa um canal, que espera em vez de recusar