Panikwiederherstellung in Golang mit MGO: Verhinderung der „Keine erreichbaren Server“-Panik
Beim Herstellen einer Verbindung zu einer MongoDB-Instanz über die MGO-Bibliothek in Go , kann es zu einer „Keine erreichbaren Server“-Panik kommen, wenn die Instanz nicht verfügbar oder offline ist. Dies kann zu einem unerwarteten Programmabbruch führen.
Um dieses Problem zu verhindern, können wir einen Wiederherstellungsmechanismus mithilfe der Verzögerungs- und Wiederherstellungsfunktionen in Go implementieren. Die in der Frage bereitgestellte Lösung funktioniert jedoch nicht effektiv.
Geänderter Code:
Unten finden Sie eine modifizierte Version des angegebenen Codes, der die Panik erfolgreich behebt und Ermöglicht dem Programm, die Ausführung fortzusetzen:
package main import ( "fmt" "time" ) import ( "labix.org/v2/mgo" ) func connectToMongo() bool { fmt.Println("enter main - connecting to mongo") defer func() { if r := recover(); r != nil { fmt.Println("Unable to connect to MongoDB. Received panic:", r) } }() maxWait := time.Duration(5 * time.Second) session, err := mgo.DialWithTimeout("localhost:27017", maxWait) if err != nil { return false } session.SetMode(mgo.Monotonic, true) coll := session.DB("MyDB").C("MyCollection") if coll != nil { fmt.Println("Got a collection object") return true } fmt.Println("Unable to retrieve collection") return false } func main() { if connectToMongo() { fmt.Println("Connected") } else { fmt.Println("Not Connected") } }
In diesem Code verwenden wir eine Verzögerungsfunktion, um die durch den DialWithTimeout-Aufruf verursachte Panik abzufangen. Wenn eine Panik auftritt, geben wir eine Fehlermeldung aus und setzen die Ausführung des Programms fort, um zu verhindern, dass es vorzeitig beendet wird.
Ausgabe mit MongoDB Down:
Wenn MongoDB Down ist, Das Programm erzeugt die folgende Ausgabe:
enter main - connecting to mongo Unable to connect to MongoDB. Received panic: no reachable servers Not Connected
Ausgabe mit MongoDB Aktiv:
Wenn MongoDB aktiv ist, erzeugt das Programm die folgende Ausgabe:
enter main - connecting to mongo Got a collection object Connected
Indem wir die Panik abfangen und eine informative Fehlermeldung bereitstellen, können wir sicherstellen, dass das Programm fortgesetzt wird ausgeführt werden und kann vorübergehende Netzwerkprobleme oder MongoDB-Ausfälle problemlos bewältigen.
Das obige ist der detaillierte Inhalt vonWie kann man mit MGO die Panik „Keine erreichbare Server' in Golang verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!