トークンバケットは、時間とともにトークンが補充される
トークンバケットは、決まった数のトークンを持つ入れ物で、リクエスト1回につき、トークンを1つ消費します。バケットには、一定の速さで、容量までトークンが補充されます。そのため、補充される速さより遅くリクエストを送るクライアントは、トークンを使い切りません。
バケットが空になると、サーバーは、それ以降のリクエストを、429 Too Many Requestsで拒否します。サーバーは、Retry-Afterヘッダーで、トークンが補充されるまでどれくらい待てばよいかを、クライアントに伝えます。
クライアントは、Retry-Afterの時間を待ってから再送すれば、根拠のない間隔で再試行して再び拒否されることを避けられます。
この課の目標
429とRetry-Afterが何を伝えるか説明できる。レート制限が時間とともにどう補充されるか、トークンバケットの直感で説明できる。
クライアントがRetry-After: 5を伴う429 Too Many Requestsを受け取った。何をすべき?