1
Classify route cost
Identify whether the route is a shallow market-state call, historical list, L3/L4 depth call, replay stream, or data-quality aggregate.
2
Limit workers
Keep concurrent workers below the account envelope and adjust by response behavior.
3
Page historical windows
Use cursors and bounded time ranges instead of one oversized request.
4
Back off on 429
Apply capped backoff with jitter and avoid retry storms.
Rate limits
Account controls and client behavior.
Errors
Retry and fail-fast rules.
Worker Model
Use a bounded worker pool. Each worker should own one route family, one symbol or small symbol set, and one time window at a time. That structure makes it possible to retry a failed page without duplicating the whole job or losing which request ID belongs to which output.Backoff Model
Use capped exponential backoff with jitter for429, transient 5xx, and network timeouts. Do not retry validation errors, missing auth, route families outside the current API, or access-gated requests without changing the input. A fast fail is better than an expensive loop that repeats the same invalid request.
Measurement
Track request count, returned row count, cursor count, latency, retry count, and request IDs. If a job moves from development to production, add a data-quality preflight and a limit dashboard before increasing symbol coverage.Throughput Plan Checklist
Create this checklist before running broad history pulls, replay jobs, generated scripts, or high-concurrency clients.
This checklist should be visible before a coding agent, cron job, notebook, or backend worker runs a wide loop. If a row is unknown, keep the job narrow until the missing limit behavior is understood.