robotlb can't see how much of the Hetzner rate limit is left, so it only reacts after a 429. Hetzner sends RateLimit-Limit and RateLimit-Remaining on every response, but the generated hcloud client drops response headers, both on success and on error.
The pause from #37 therefore uses a fixed backoff from one minute up to 16 minutes. RateLimit-Reset is not a better pause either. It marks the moment the budget is full again, which can be up to an hour away, while one request becomes available every second.
I've asked upstream for access to the headers in HenningHolmDE/hcloud-rust#43. Once it lands, robotlb could slow down as RateLimit-Remaining gets low and pause only as long as the budget needs to recover. Nothing to do here until then.
robotlb can't see how much of the Hetzner rate limit is left, so it only reacts after a 429. Hetzner sends
RateLimit-LimitandRateLimit-Remainingon every response, but the generated hcloud client drops response headers, both on success and on error.The pause from #37 therefore uses a fixed backoff from one minute up to 16 minutes.
RateLimit-Resetis not a better pause either. It marks the moment the budget is full again, which can be up to an hour away, while one request becomes available every second.I've asked upstream for access to the headers in HenningHolmDE/hcloud-rust#43. Once it lands, robotlb could slow down as
RateLimit-Remaininggets low and pause only as long as the budget needs to recover. Nothing to do here until then.