Suppose I make a very large number of write requests to a DDB table, so that its provisioned write capacity is far exceeded and it starts to throttle me. I eventually stop sending requests. How long do I then have to wait before it's guaranteed that DDB will not throttle a new write request?
DynamoDB throttled on a per-second basis. If you have no retries enabled on your client, and you stop writing, you would be able to succeed in the following second.
However, when you have retries, those are still consuming capacity. So ultimately the answer is variable, depending on your retry and back-off strategy.
Retries would not surpass 1-2 minutes usually, if using the default configuration.
To further elaborate, capacity in DynamoDB is provisioned on a per-second basis. If you provision 100 RCU, you can consume 100 RCU per second. If you exceed 100 RCU in a given second, you get throttled. However, the following second still has 100 RCU available to you.
This is a simplified example, in reality DynamoDB is an extremely large distributed system, and counting every tables request rate synchronously would impact its performance. For that, we introduce the aspect of token buckets controlled by a PID controller. If you would like to learn more of how this works in-depth, then I suggest this video from Jaso's re:Invent talk 2018