"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar que solicitações HTTP continuem após o tempo limite em uma Goroutine?

Como evitar que solicitações HTTP continuem após o tempo limite em uma Goroutine?

Publicado em 15/11/2024
Navegar:300

How to Prevent HTTP Requests from Continuing After Timeout in a Goroutine?

Goroutine Timeout

A função fornecida, Find(), usa uma goroutine para fazer uma série de solicitações HTTP e lidar com suas respostas. No entanto, a preocupação é que essas solicitações continuem em segundo plano, mesmo que excedam o tempo limite especificado.

Potencial vazamento de goroutine

É improvável que haja um vazamento de goroutine em o código. Quando a função Find() retorna um tempo limite, a goroutine principal continua e a goroutine de segundo plano é essencialmente abandonada.

Cancelamento de solicitação HTTP

Para evitar fazer solicitações após um tempo limite , a solução é usar um context.Context para cada solicitação HTTP. Um contexto permite cancelar a solicitação se ocorrer um tempo limite.

func Find() (interface{}, bool) {
  ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
  defer cancel()

  ch := make(chan Response, 1)

  go func() {
    data, status := findCicCode()
    ch 

Quando o tempo limite ocorrer, chamar cancel() cancelará todas as solicitações HTTP criadas no ctx. Isso evita que qualquer processamento adicional ou recursos sejam consumidos por essas solicitações.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3