Criando uma cópia de contexto sem propagação de cancelamento em go
ao trabalhar com contextos em go, pode surgir que você precisa criar uma cópia de um contexto existente que contenha os mesmos valores, mas se comporta de forma independente de termos de CANCELL. Esse cenário ocorre, por exemplo, quando você deseja executar uma tarefa assíncrona depois de responder a uma solicitação HTTP, que pode sobreviver ao contexto original. No entanto, está disponível uma solução mais simples e gerenciável. Esta função permite que você crie um novo contexto que herda todos os valores do contexto original, mas é imune ao seu cancelamento:
importar "contexto" // sem a Cancel retorna um contexto que nunca é cancelado. Func WithoutCancel (CTX context.Context) context.Context { retornar context.withValue (context.background (), context.nocancel {}, struct {} {}) }
Para usar sem crancel, basta embrulhar seu contexto original da seguinte Resultado: = Dostuff (CTX) newContext: = context.withoutCancel (CTX) vá func () { Dosomethingelse (NewContext) } () resultado de retorno }
import "context" // WithoutCancel returns a context that is never canceled. func WithoutCancel(ctx context.Context) context.Context { return context.WithValue(context.Background(), context.NoCancel{}, struct{}{}) }
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