"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo evitar que las solicitudes HTTP continúen después del tiempo de espera en una rutina?

¿Cómo evitar que las solicitudes HTTP continúen después del tiempo de espera en una rutina?

Publicado el 2024-11-15
Navegar:147

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

Tiempo de espera de goroutine

La función proporcionada, Find(), utiliza una goroutine para realizar una serie de solicitudes HTTP y manejar sus respuestas. Sin embargo, la preocupación es que estas solicitudes continúan en segundo plano incluso si exceden el tiempo de espera especificado.

Posible fuga de gorutina

Es poco probable que haya una fuga de gorutina en el código. Cuando la función Find() devuelve un tiempo de espera, la rutina principal continúa y la rutina de fondo esencialmente se abandona.

Cancelación de solicitud HTTP

Para evitar realizar solicitudes después de un tiempo de espera , la solución es utilizar un contexto. Contexto para cada solicitud HTTP. Un contexto le permite cancelar la solicitud si se agota el tiempo de espera.

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 

Cuando se agote el tiempo de espera, llamar a cancel() cancelará todas las solicitudes HTTP creadas dentro del ctx. Esto evita que esas solicitudes sigan procesando o consumiendo recursos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3