ホームページ  >  記事  >  バックエンド開発  >  Go でバックグラウンド処理を維持しながら、202 Accepted ステータスで HTTP リクエストを適切に閉じるにはどうすればよいですか?

Go でバックグラウンド処理を維持しながら、202 Accepted ステータスで HTTP リクエストを適切に閉じるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 09:45:29724ブラウズ

 How to Properly Close HTTP Requests with 202 Accepted Status While Maintaining Background Processing in Go?

バックグラウンド処理の継続中にリクエストを適切にクローズする

ステータス コード 202 Accepted で HTTP リクエストに応答する場合、リクエストのクローズを正しく処理することが重要です。ペイロードが引き続きバックグラウンドで処理できることを確認します。

Return ステートメントの十分性

クローズする必要があるリクエストを処理する場合、 を行うことが重要です。ハンドラー関数から return を返し、完了を通知します。これは、http.Handler のドキュメントによると、return はリクエストが終了したことを示しており、同時に、または return 後に ResponseWriter または Request.Body にアクセスすることは無効であるためです。

Final Return の省略

リクエストを閉じるにはハンドラー関数から戻るだけで十分なので、最後の return ステートメントを完全に省略できます。 Go では、リターンであるかどうかに関係なく、最後のステートメントが実行されると関数が終了します。

202 の最小限のコードが受け入れられます

必要な場合のみ202 Accepted ステータス コードを返し、バックグラウンドでの処理を続行するには、次の最小限のコードで十分です。

<code class="go">func index(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusAccepted)
    go sleep()
}</code>

同時使用に関する注意事項

ハンドラーから戻った後の並行ゴルーチン内の ResponseWriter または http.Request 値は、再利用される可能性があるため安全ではありません。

以上がGo でバックグラウンド処理を維持しながら、202 Accepted ステータスで HTTP リクエストを適切に閉じるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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