#3446·bbot

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():

python
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