Choisir entre context.TODO() et context.Background() dans Go Mongo-Driver
Travailler avec des contextes vides non nuls dans Go Mongo-Driver peut être déroutant. Comprendre le but de context.Background() et context.TODO() peut aider à clarifier leur utilisation.
Selon la documentation Go :
-
context.Background() : Renvoie un contexte vide et non nul qui n'est jamais annulé, n'a aucune valeur et aucune date limite. Il est généralement utilisé dans la fonction principale, l'initialisation et les tests, et comme contexte de niveau supérieur pour les requêtes entrantes.
-
context.TODO() : Renvoie un message vide non nul. Contexte. Le code doit utiliser context.TODO() lorsqu'il n'est pas clair quel contexte utiliser ou qu'il n'est pas encore disponible (car la fonction environnante n'a pas encore été étendue pour accepter un paramètre de contexte).
Recommandation : Lorsque vous avez besoin d'un contexte mais que vous n'en avez pas (encore) et que vous ne savez pas quoi utiliser, utilisez context.TODO(). Cela documente que vous ne savez pas quel contexte utiliser ou qu'il n'est pas encore disponible.
Si vous avez un contexte, envisagez de l'utiliser ou d'en dériver un nouveau. Par exemple :
- Si vous disposez d'un gestionnaire HTTP et d'une requête MongoDB, l'utilisation de Request.Context() pourrait économiser des ressources car elle est annulée lorsque le client HTTP abandonne la requête.
- Si vous avez un délai d'attente pour une opération MongoDB, dérivez un contexte de context.Background() avec le délai d'attente approprié.
Comprendre la différence entre context.TODO() et context.Background() peut vous aider à choisir le contexte approprié pour votre utilisation de Go Mongo-Driver, garantissant une allocation et une gestion optimales des ressources.
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!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn