Can a Firestore Client Be Created per Request in Google App Engine?
In Google App Engine (GAE), there has been ambiguity regarding the optimal approach to managing Firestore clients. This article will address this question, clarifying the best practices depending on the GAE runtime being used.
Traditionally, in the legacy GAE standard runtime, creating a new Firestore client for each request was necessary. However, with the introduction of the Go 1.11 runtime for GAE standard, developers now have more flexibility.
For Go 1.11 and newer runtimes, it is recommended to create a singleton Firestore client during initialization, using either the main() or init() function, with the context.Background(). This allows for client reuse across multiple request invocations. Here's an example:
package main import "cloud.google.com/go/firestore" var client *firestore.Client func init() { var err error client, err = firestore.NewClient(context.Background()) // handle errors as needed } func handleRequest(w http.ResponseWriter, r *http.Request) { doc := client.Collection("cities").Doc("Mountain View") doc.Set(r.Context(), someData) // rest of the handler logic }
This approach is not only more efficient but also aligns with the recommended pattern for creating a Firestore client in the context of GAE. In contrast, creating a new client per request can result in unnecessary overhead and inconvenience.
In summary, if using the Go 1.11 runtime in GAE standard, it is recommended to create a single Firestore client during initialization and reuse it for all request invocations. This approach provides improved performance and simplified code maintenance.
The above is the detailed content of Should I Create a New Firestore Client Per Request in Google App Engine?. For more information, please follow other related articles on the PHP Chinese website!