nba_api icon indicating copy to clipboard operation
nba_api copied to clipboard

[Bug]: HTTPSConnectionPool(host='stats.nba.com', port=443): Read timed out. (read timeout=30)

Open ghadfield32 opened this issue 1 year ago • 4 comments

NBA API Version

latest

Issue

I'm having the same kind of issue as described in this post for leaguegamefinder and playergamelog. Can you tell me where I'm going wrong in my api call? It's been working for NBA season so far as I've been running some models on this data until now. Just today it started giving me the timeout error.

Code

from nba_api.stats.endpoints import leaguegamefinder import pandas as pd import time import requests

Custom headers to mimic a browser request

custom_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Referer': 'https://stats.nba.com', 'Connection': 'keep-alive', }

def get_games_by_season(season_year_start, retries=3, delay=30): season_id = f"{season_year_start}-{str(season_year_start+1)[-2:]}"

for attempt in range(retries):
    try:
        gamefinder = leaguegamefinder.LeagueGameFinder(season_nullable=season_id)
        gamefinder.nba_api.client.headers = custom_headers
        gamefinder.nba_api.client.timeout = 60  # Reduced timeout

        games = gamefinder.get_data_frames()[0]
        return games
    except requests.exceptions.Timeout:
        print(f"Timeout for season {season_id}, retry {attempt+1}/{retries}. Waiting {delay} seconds...")
        time.sleep(600)  # Shorter delay before retrying
    except Exception as e:
        print(f"Error for season {season_id}: {e}")
        break

return pd.DataFrame()  # Empty DataFrame on failure

all_seasons_data = pd.DataFrame()

for year in range(2023, 2024): season_data = get_games_by_season(year) if not season_data.empty: all_seasons_data = pd.concat([all_seasons_data, season_data], ignore_index=True) else: print(f"No data for season starting in {year}")

ghadfield32 avatar Nov 15 '23 01:11 ghadfield32

Did you ever find a solution? Having the same issue myself, randomly stopped working

LeKD6 avatar Dec 26 '23 21:12 LeKD6

Having this same issue as well

SrijithVenkat avatar Feb 20 '24 02:02 SrijithVenkat

+1 on this issue, anyone find a solution?

erik-rt avatar May 09 '24 14:05 erik-rt

Same issue here

File "d:\batch\tasks\workitems\adfv2-bapredictordev01pool\job-1\94838f92-d599-4fed-9e90-c1097d4d2e5a\wd\main.py", line 75, in Main if get_query(leaguegamefinder.LeagueGameFinder().get_data_frames()[0]) is None: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\nba_api\stats\endpoints\leaguegamefinder.py", line 249, in __init__ self.get_request() File "C:\Python312\Lib\site-packages\nba_api\stats\endpoints\leaguegamefinder.py", line 252, in get_request self.nba_response = NBAStatsHTTP().send_api_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\nba_api\library\http.py", line 146, in send_api_request response = requests.get( ^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\requests\api.py", line 73, in get return request("get", url, params=params, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\requests\api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\requests\sessions.py", line 589, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\requests\sessions.py", line 703, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\requests\adapters.py", line 501, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

benj1229 avatar Jun 24 '24 17:06 benj1229