„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wann schließt eine GO -Webanwendung die Datenbankverbindung?

Wann schließt eine GO -Webanwendung die Datenbankverbindung?

Gepostet am 2025-04-15
Durchsuche:372

 When Should You Close Database Connections in Go Web Apps?

verwalten Datenbankverbindungen in Go -Webanwendungen

In einfachen Go -Webanwendungen, die Datenbanken wie PostgreSQL verwenden, wird das Timing der Datenbankverbindungssperrung zu einer Überlegung. Hier ist ein tiefes Eintauchen, wann und wie man dies in Anwendungen bearbeitet, die auf unbestimmte Zeit ausgeführt werden.

Problem:

Betrachten Sie den folgenden vereinfachten GO -Web -Anwendungscode:

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)
}

Die Frage stellt sich: Wann sollte die Methode close () auf die DB -Verbindung aufgerufen werden?

antworten:

In diesem speziellen Szenario schließen die Verbindung automatisch, wenn das Programm verlässt. Andere Überlegungen können jedoch die manuelle Handhabung rechtfertigen.

Option 1: Implizite Schließen

Das Programm schließt die Datenbankverbindung, wenn es endet, also ist es nicht notwendig, Close () auszuziehen. Anwendungen in Betracht ziehen, einen anmutigen Server wie github.com/grpc-ecosystem/go-grpc-middleware/server zu verwenden, die nach Erhalt von Signalen aufgeschobene Ressourcenschließungen und sauberes Abschalten erlaubt. Dies ist nützlich für die körnige Kontrolle über den Ressourcenverschluss. Beispielsweise könnte ein Schlusskanal verwendet werden, um Goroutines zur Veröffentlichung von Ressourcen zu benachrichtigen, bevor das Programm beendet wird. Die Auswahl des entsprechenden Ansatzes sorgt für eine ordnungsgemäße Reinigung und verhindert Ressourcenlecks.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3