RaceDashBot
1. What RaceDashBot is
RaceDash makes onboard videos with lap-timer overlays. When a RaceDash user imports a session from a timing provider, RaceDash's server fetches that session's published results. RaceDashBot is that server.
It reads the same public pages a driver would open. It fetches them once, keeps a shared copy for a short time, and serves that copy to everyone who asks.
2. What it fetches
RaceDashBot fetches only the sessions and events a RaceDash user asked for. It does not crawl, follow links on a page, run scripts or send cookies. If a provider redirects a request, RaceDashBot follows that redirect once, and only to another page on the same provider host.
RaceDash fetches a session when a user imports it. It also fetches one when a results check on a planned project looks for that session's results.
Alpha Timing
All pages are on www.alpharacehub.com. A session costs three requests, or four for a race.
/{club}/e/{event}/s/{session}/laptimes/{club}/e/{event}/s/{session}/replay/{club}/e/{event}/s/{session}/result/{club}/e/{event}/s/{session}/grid(races only)
An event page costs one request: /{club}/e/{event} or /{club}/event/{event}, as the user's link has it.
SpeedHive by MyLaps
All requests go to the results API at eventresults-api.speedhive.com, under the base path /api/v0.2.3/eventresults. The paths below start after that base path. A session costs one request for the session, one for its classification, one for the lap chart if it is a race, and one for the lap data of each classified driver.
/sessions/{session}/sessions/{session}/classification/sessions/{session}/lapchart(races only)/sessions/{session}/lapdata/{n}/laps, once for each classified driver
An event's session list costs one request: /events/{event}/sessions.
When event pages are fetched
The event page is fetched when a RaceDash user's planned project checks whether results are up. That happens when they open the project, when their computer comes back online, or when they press Check now. A project checks at most once a minute. Nothing runs on a timer.
3. How much
Results are cached and shared between all users, so one session is fetched once, not once for each user.
- A session with no results yet is kept for 60 seconds.
- A session that started under an hour ago, or has no start time, is kept for 5 minutes.
- A session that started under a day ago is kept for 4 hours.
- An older session is kept for 60 seconds. The RaceDash app keeps its own copy.
- An event page is kept for 60 seconds.
- A link with nothing at it is remembered for 120 seconds.
So a copy lives between 60 seconds and 4 hours. After that, RaceDashBot fetches again only if a user asks.
RaceDashBot stays under these limits for each provider. They are maximums, and real traffic is usually well below them.
- Alpha Timing up to 20 requests a minute, 2 at once.
- SpeedHive by MyLaps up to 120 requests a minute, 4 at once.
Each RaceDash user is limited too. These limits count for every provider together.
- 60 requests a minute to RaceDash's server.
- 20 session imports an hour that need a new fetch.
- 60 event lookups an hour that need a new fetch.
4. When told to stop
If a provider asks RaceDashBot to slow down or stop, it stops for that provider.
- HTTP 429. It waits for the time in the
Retry-Afterheader. If there is none, it waits 60 seconds. It never waits more than 30 minutes, and it never retries a 429. - HTTP 403. It stops for 15 minutes.
- Failures. It retries a failed request once, after 2 seconds. A request that still fails counts. After 3 counted failures within 5 minutes, it stops for 5 minutes.
While it is stopped, RaceDashBot sends the provider nothing. RaceDash users see a message that the provider is busy and to try again later.
5. How to identify it
Every request has this User-Agent:
RaceDashBot/1.0 (+https://racedash.io/bot; support@racedash.io)
Requests come from Vercel's London region. There is no fixed IP range, so please match on the User-Agent.
6. Contact
Email support@racedash.io about anything, from "slow down" to "stop".
We can pause RaceDashBot for your site within minutes, without a release.