0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

API Best Practices ~RPCには必ず期限を設定する

Last updated at Posted at 2024-12-16

RPCには必ず期限を設定する

RPCにはデフォルトでタイムアウトがありません。
リクエストは完了時にのみ解放されるバックエンドリソースを占有するため、デフォルトの期限を設定することは良い方法です。
通常、標準フレームワークを使用するときにデフォルトでそうします。

期限は、リクエストに添付されたより短い期限によって上書きされる場合があります。
deadline オプションを設定することで、クライアントにRPCの期限を明確に伝え、標準フレームワークによって尊重され、強制されます。

rpc Foo(FooRequest) returns (FooResponse) {
  option deadline = x; // there is no globally good default
}

既存のサービスの場合、破壊的変更とならないよう、新しい期限を強制する前に既存のクライアントの動作を評価することが重要です。
場合によっては、事後に短い期限を強制できない場合があります。


proto で明記せず、各言語の実装でデフォルト値を設定するのが一般的かもしれない。
public API として提供する場合は、proto で明記しておくべきかもしれない。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?