Maison > Article > développement back-end > Quand utiliser `context.TODO()` plutôt que `context.Background()` dans Go Mongo-Driver ?
Navigation dans Context.TODO() et Context.Background() dans Go Mongo-Driver
Lorsque vous travaillez avec le pilote Go mongo, vous pouvez rencontrer la question de savoir quand utiliser context.TODO() et quand utiliser context.Background(). Les deux fonctions renvoient des contextes vides non nuls, mais comprendre leur objectif et leurs différences est crucial pour une utilisation correcte.
Context.Background()
"Context.Background() " est généralement utilisé dans les fonctions principales, les routines d'initialisation et les tests. Selon la documentation Go, il renvoie un contexte vide non nul qui n'est jamais annulé, n'a aucune valeur et n'a pas de date limite. Son objectif principal est de servir de contexte de niveau supérieur pour les demandes entrantes.
Context.TODO()
"Context.TODO()" est utilisé lorsque vous nécessitent un contexte mais n’en ont pas (encore) disponible et ne savent pas lequel utiliser. En utilisant context.TODO(), vous indiquez clairement que le contexte n'a pas encore été établi. Il agit comme un espace réservé lorsque la fonction environnante n'a pas été étendue pour accepter un paramètre de contexte.
Bonnes pratiques
Si vous disposez d'un contexte, utilisez-le en priorité contexte ou en dériver un nouveau. Ceci est applicable dans des scénarios tels que les gestionnaires HTTP, où la requête HTTP http.Request contient déjà un contexte accessible via Request.Context().
L'utilisation du contexte de requête dans ces situations offre une optimisation des ressources. Par exemple, si le client HTTP abandonne la requête, la requête MongoDB associée peut être annulée, économisant ainsi du temps de calcul et de la mémoire sur les deux serveurs.
Un autre scénario consiste à définir un délai d'attente pour les opérations MongoDB. En dérivant un contexte avec un délai d'attente, vous pouvez garantir que l'opération est annulée si elle dépasse le délai spécifié. Cela permet d'éviter les retards dans les scénarios où le post-traitement peut prendre beaucoup de temps.
Conclusion
N'oubliez pas d'utiliser context.Background() lors de l'initialisation des contextes ou lorsque le contexte le fait pas besoin d’expirer. Utilisez context.TODO() lorsqu'un contexte est requis mais n'a pas encore été établi. Donnez la priorité à l’utilisation d’un contexte pertinent lorsqu’il en existe un. En comprenant ces nuances, vous pouvez gérer efficacement les contextes lorsque vous travaillez avec le pilote Go mongo, garantissant ainsi des performances et une utilisation des ressources optimales.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!