Heim > Backend-Entwicklung > Golang > Firestore-Client in Google App Engine: Pro-Anfrage oder global?

Firestore-Client in Google App Engine: Pro-Anfrage oder global?

Linda Hamilton
Freigeben: 2024-11-25 11:45:15
Original
571 Leute haben es durchsucht

Firestore Client in Google App Engine: Per-Request or Global?

Erstellen eines Firestore-Clients in Google App Engine: Pro Anfrage oder global?

Kontextbewusstsein in Google App Engine

Google App Engine (GAE) schlägt vor, für jede Clientbibliothek einen context.Context zu verwenden, der auf die HTTP-Anfrage beschränkt ist. Dadurch wird sichergestellt, dass der Client an die spezifische Anfrage gebunden ist und kontextspezifische Daten für die Datenbankoperationen bereitstellt.

Per-Request vs. Global Client

Pro-Request-Ansatz:

Im bereitgestellten Beispiel wird für jeden ein neuer Firestore-Client innerhalb der Handler-Funktion erstellt Anfrage:

func (s *server) person(ctx context.Context, id int) {
    _, err := s.db.Client.Collection("people").Doc(uid).Set(ctx, p)
}
Nach dem Login kopieren

Während dieser Ansatz sicherstellt, dass der Client von der aktuellen Anfrage isoliert ist, kann er ineffizient sein und unnötigen Overhead verursachen, insbesondere bei Anfragen mit langer Laufzeit oder hochfrequenten Vorgängen.

Globaler Client-Ansatz:

Ein alternativer Ansatz besteht darin, einen einzelnen globalen Firestore-Client zu erstellen und ihn für mehrere Anfragen wiederzuverwenden. Dies war jedoch in der alten Go-Laufzeit in GAE nicht möglich.

Neue Go 1.11-Laufzeit

Mit der Einführung der Go 1.11-Laufzeit für den GAE-Standard wurden die Kontext-Scoping-Einschränkungen gelockert. Dadurch können Sie jetzt jeden Kontext verwenden, den Sie bevorzugen.

Best Practices für Go 1.11 und Firestore

In der neuen GAE-Standardlaufzeit wird Folgendes empfohlen:

  1. Initialisieren Sie den Firestore-Client in der Funktion main() oder init() unter Verwendung des Hintergrunds Kontext:

    func init() {
     var err error
     client, err = firestore.NewClient(context.Background())
    }
    Nach dem Login kopieren
  2. Verwenden Sie in Anforderungshandlern den Anforderungskontext für API-Aufrufe:

    func handleRequest(w http.ResponseWriter, r *http.Request) {
     doc := client.Collection("cities").Doc("Mountain View")
     doc.Set(r.Context(), someData)
    }
    Nach dem Login kopieren

Indem Sie diese Best Practices befolgen, Sie können die Effizienzgewinne nutzen, die sich durch die Wiederverwendung eines globalen Firestore-Clients ergeben, und gleichzeitig den anforderungsspezifischen Kontext in Ihren Datenbankvorgängen beibehalten.

Das obige ist der detaillierte Inhalt vonFirestore-Client in Google App Engine: Pro-Anfrage oder global?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage