コントローラー、サービス、リポジトリなどを備えた階層型バックエンド API を開発しています。
###コンテクスト###を含む context.Context
を最初のパラメータとして受け取ります。これは、どのメソッドでもさまざまなリクエスト関連データ (相関 ID など) にアクセスできるため便利です。
各
には、次の TimeoutMiddleware によってタイムアウトが設定されます。
リーリー
###チャレンジ###
このアイデアは、リクエスト コンテキストがタイムアウトになったときに、進行中の操作を適切に停止することです。
コンテキストと同時実行性 (ほとんどはありません) の理解に基づいて、次のヘルパー関数を作成しました。
リーリー
リーリー
また、データベースにアクセスするリポジトリでは、Query、QueryRow、Exec など、ほとんどの関数に Context
が必要であることもわかっています。 # ## ...、次のように:###
リーリー
したがって、上記の行でエラーが発生するたびに、単に internal_server_error と次のようなエラー メッセージを返すのではなく、エラーがコンテキストのキャンセルによるものではないかどうかを確認する必要があります。
リーリー
リーリー
HandleContextCancel 関数の使用は少し冗長に思えますが、どう思いますか?
正解
HandleContextCancel
リーリー
他のエラー処理関数がこのエラーを正しくラップしている場合 (つまり、
Unwrap() error
以上がクロスレイヤーコンテキストキャンセルの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。