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.
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