"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quand une application Web GO ferme-t-elle la connexion de la base de données?

Quand une application Web GO ferme-t-elle la connexion de la base de données?

Publié le 2025-04-15
Parcourir:956

 When Should You Close Database Connections in Go Web Apps?

Gestion des connexions de bases de données dans les applications Web Go

Dans les applications Web simples GO qui utilisent des bases de données comme PostgreSQL, le calendrier de la fermeture de connexion de données devient une considération. Voici une plongée profonde dans quand et comment gérer cela dans des applications qui s'exécutent indéfiniment. func main () { Var Err Error db, err = sql.open ("postgres", "...") Si err! = Nil { log.fatalf ("ne pouvait pas se connecter à la base de données:% v", err) } http.handlefunc ("/ quoi que ce soit", quoi que ce soit) http.ListenandServe ("127.0.0.1:8080", nil) }

La question se pose: quand la méthode close () doit-elle être appelée sur la connexion DB?

Réponse:

var db *sql.DB

func main() {
    var err error
    db, err = sql.Open("postgres", "...")
    if err != nil {
        log.Fatalf("Couldn't connect to the database: %v", err)
    }

    http.HandleFunc("/whatever", whateverHandler)
    http.ListenAndServe("127.0.0.1:8080", nil)
}

Option 1: clôture implicite

Le programme fermera la connexion de la base de données lorsqu'elle se termine, il n'est donc pas nécessaire d'appeler clôture () Explicit. Fermer

pour des applications plus complexes, envisagez d'utiliser un serveur gracieux, tel que github.com/grpc-ecosystem/go-grpc-middleware/Server, qui permet la fermeture de ressources différées et la fermeture de l'arrêt lors de la réception de signaux. Shutdown

Une autre approche consiste à attraper des signaux et à implémenter les mécanismes d'arrêt manuel. Ceci est utile pour le contrôle granulaire de la fermeture des ressources. Par exemple, un canal de clôture pourrait être utilisé pour informer les Goroutines pour publier des ressources avant que le programme ne sache. Le choix de l'approche appropriée garantit un nettoyage approprié et empêche les fuites de ressources.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3