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