Mercurial > p > roundup > code
comparison roundup/rest.py @ 7552:5775d2c4a846
Fix race condition that results in missing Retry-After header
when rate limit exceeded.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 16 Jul 2023 20:12:45 -0400 |
| parents | 886a5c767d7e |
| children | 940f06dac1b4 |
comparison
equal
deleted
inserted
replaced
| 7551:4857f0101e20 | 7552:5775d2c4a846 |
|---|---|
| 2088 # item, Retry-After will be missing from | 2088 # item, Retry-After will be missing from |
| 2089 # limitStatus. So report a 1 second delay back | 2089 # limitStatus. So report a 1 second delay back |
| 2090 # to the client. We treat update as sole | 2090 # to the client. We treat update as sole |
| 2091 # source of truth for exceeded rate limits. | 2091 # source of truth for exceeded rate limits. |
| 2092 retry_after = 1 | 2092 retry_after = 1 |
| 2093 self.client.setHeader('Retry-After', '1') | |
| 2093 | 2094 |
| 2094 msg = _("Api rate limits exceeded. Please wait: %s seconds.") % retry_after | 2095 msg = _("Api rate limits exceeded. Please wait: %s seconds.") % retry_after |
| 2095 output = self.error_obj(429, msg, source="ApiRateLimiter") | 2096 output = self.error_obj(429, msg, source="ApiRateLimiter") |
| 2096 else: | 2097 else: |
| 2097 for header, value in limitStatus.items(): | 2098 for header, value in limitStatus.items(): |
