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

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

DDD
リリース: 2024-10-29 00:36:30
オリジナル
1003 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート