-
-
Notifications
You must be signed in to change notification settings - Fork 397
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the issue:
I'm using FastF1 in an ipython notebook (within VSCode).
When I hit the rate limit and my log level is set to WARNING or INFO, I typically see errors like this ValueError: Failed to load any schedule data.. If I set log level to DEBUG, I get a print of the error in the logger: fastf1.req.RateLimitExceededError: any API: 500 calls/h.
It seems like the FastF1 API is handling these fastf1.req.RateLimitExceededError internally, but the ValueError is very ambiguous. There are a bunch of different ways this could be handled but it would be nice to have a way to tell the end user that it's a rate limit, not the code.
Reproduce the code example:
import fastf1 as ff1
ff1.set_log_level('WARNING')
ff1.Cache.offline_mode(False)
race = ff1.get_session(2021, 22, 'R')
race.load(laps=True, telemetry=False, weather=False, messages=False)Error message:
WITH LOG LEVEL WARNING
ValueError: Failed to load any schedule data.
WITH LOG LEVEL DEBUG
logger WARNING Failed to load schedule from FastF1 backend!
logger DEBUG Traceback for failure in FastF1 schedule
Traceback (most recent call last):
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/logger.py", line 151, in __wrapped
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/events.py", line 584, in _get_schedule_ff1
response = Cache.requests_get(
^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 303, in requests_get
return cls._cached_request('GET', url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 347, in _cached_request
response = func(url, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 127, in get
return self.request('GET', url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 183, in request
return super().request(method, url, *args, headers=headers, **kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 230, in send
response = self._send_and_cache(request, actions, cached_response, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 254, in _send_and_cache
response = super().send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 134, in send
lim.limit()
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 104, in limit
raise RateLimitExceededError(self._info)
fastf1.req.RateLimitExceededError: any API: 500 calls/h
req INFO No cached data found for season_schedule. Loading data...
_api INFO Fetching season schedule...
logger WARNING Failed to load schedule from F1 API backend!
logger DEBUG Traceback for failure in F1 API schedule
Traceback (most recent call last):
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/logger.py", line 151, in __wrapped
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/events.py", line 644, in _get_schedule_from_f1_timing
response = fastf1._api.season_schedule(f'/static/{year}/')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 479, in _cached_api_request
data = func(api_path, **func_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/_api.py", line 1651, in season_schedule
response = fetch_page(path, 'index')
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/_api.py", line 1725, in fetch_page
r = Cache.requests_get(base_url + path + pages[name], headers=headers)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 303, in requests_get
return cls._cached_request('GET', url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 347, in _cached_request
response = func(url, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 127, in get
return self.request('GET', url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 183, in request
return super().request(method, url, *args, headers=headers, **kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 230, in send
response = self._send_and_cache(request, actions, cached_response, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 254, in _send_and_cache
response = super().send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 134, in send
lim.limit()
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 104, in limit
raise RateLimitExceededError(self._info)
fastf1.req.RateLimitExceededError: any API: 500 calls/h
logger WARNING Failed to load schedule from Ergast API backend!
logger DEBUG Traceback for failure in Ergast API Schedule
Traceback (most recent call last):
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/logger.py", line 151, in __wrapped
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/events.py", line 731, in _get_schedule_from_ergast
season = fastf1.ergast.fetch_season(year)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/ergast/legacy.py", line 29, in fetch_season
Cache.requests_get(url, headers=_headers))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 303, in requests_get
return cls._cached_request('GET', url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 347, in _cached_request
response = func(url, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 127, in get
return self.request('GET', url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 183, in request
return super().request(method, url, *args, headers=headers, **kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 230, in send
response = self._send_and_cache(request, actions, cached_response, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/requests_cache/session.py", line 254, in _send_and_cache
response = super().send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 134, in send
lim.limit()
File "/Users/u/.pyenv/versions/3.12.10/lib/python3.12/site-packages/fastf1/req.py", line 104, in limit
raise RateLimitExceededError(self._info)
fastf1.req.RateLimitExceededError: any API: 500 calls/h
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working