Maison  >  Article  >  développement back-end  >  Les Goroutines peuvent-ils survivre aux requêtes HTTP dans Google App Engine (environnement standard) ?

Les Goroutines peuvent-ils survivre aux requêtes HTTP dans Google App Engine (environnement standard) ?

DDD
DDDoriginal
2024-10-29 00:36:30878parcourir

Can Goroutines Outlive HTTP Requests in Google App Engine (Standard Environment)?

Les Goroutines peuvent-ils survivre aux requêtes HTTP dans Google App Engine (environnement standard) ?

Dans l'environnement standard de Google App Engine, il peut sembler possible de créez des goroutines qui continuent de s'exécuter une fois la requête HTTP traitée. Cependant, cette approche peut entraîner des problèmes :

func MyHandler(w http.ResponseWriter, r *http.Request) {

  go func() {
    // do something ...
  }() 

  return // 200
}

Réponse :

Les goroutines qui survivent à la requête ne sont pas prises en charge dans l'environnement standard d'App Engine. Utilisez plutôt runtime.RunInBackground pour exécuter du code dans une goroutine en arrière-plan. La fonction fournie recevra un contexte d'arrière-plan distinct du contexte de la demande. Il est important de noter qu'il existe une limite de 10 requêtes en arrière-plan simultanées par instance.

func MyHandler(w http.ResponseWriter, r *http.Request) {

  err := runtime.RunInBackground(c, func(c appengine.Context) {
    // do something...
  })

  return // 200
}

Alternativement, les goroutines qui vivent dans le contexte d'une requête sont prises en charge. Cependant, l'environnement d'exécution d'App Engine ne prend en charge les goroutines que sur un seul thread du système d'exploitation. Aucune exécution parallèle n'aura donc lieu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn