api_request() sleeps for `Retry-After: 0`
Author: TsybonCreated Sep 18, 2026Updated Sep 18, 2026
Shodan answers HTTP 429 with Retry-After: 0. BaseModule.api_request():
sleep_interval = int(retry_after) if retry_after is not None else self._429_sleep_interval
...
await asyncio.sleep(sleep_interval)So a rate-limited request retries immediately, in a tight loop — observed as
sleeping 0.0s repeated through a scan. A floor on the sleep interval would fix
it for every API module, not just this one.
Source: blacklanternsecurity/bbot