ホームページ  >  記事  >  バックエンド開発  >  Goroutines は Google App Engine (スタンダード環境) で HTTP リクエストを超えて存続できますか?

Goroutines は Google App Engine (スタンダード環境) で HTTP リクエストを超えて存続できますか?

DDD
DDDオリジナル
2024-10-29 00:36:30878ブラウズ

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

Google App Engine (スタンダード環境) でゴルーチンは HTTP リクエストを超えて存続できますか?

Google App Engine のスタンダード環境では、次のことが可能であるように思われるかもしれません。 HTTP リクエストが処理された後も実行を続けるゴルーチンを作成します。ただし、このアプローチでは問題が発生する可能性があります。

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

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

  return // 200
}

回答:

リクエストを超えて存続する Goroutine は、App Engine のスタンダード環境ではサポートされていません。代わりに、 runtime.RunInBackground を使用して、バックグラウンドの goroutine でコードを実行します。提供された関数は、リクエスト コンテキストとは異なるバックグラウンド コンテキストを受け取ります。インスタンスごとのバックグラウンド リクエストの同時実行数は 10 に制限されていることに注意することが重要です。

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

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

  return // 200
}

あるいは、リクエストのコンテキスト内で存在するゴルーチンもサポートされています。ただし、App Engine のランタイム環境は、単一のオペレーティング システム スレッド上のゴルーチンのみをサポートするため、並列実行は発生しません。

以上がGoroutines は Google App Engine (スタンダード環境) で HTTP リクエストを超えて存続できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。