Exception in Thread while fetching data from yahoo finance api

Viewed 462

My code works fine for a moment and save the data of 50 - 100 stocks but after few stocks it shows this error.

Code:

for idx,i in enumerate(tickers[2400:2800]):
    df = yf.download(i, start=start_date, end=today)
    if df.shape[0] > 0:
        print(idx)
        df.to_csv("Data/Stocks\{}.csv".format(i))

Error:

Exception in thread Thread-351:
Traceback (most recent call last):
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "F:\Software_Installations\Anaconda3\lib\http\client.py", line 1321, in getresponse
    response.begin()
  File "F:\Software_Installations\Anaconda3\lib\http\client.py", line 296, in begin
    version, status, reason = self._read_status()
  File "F:\Software_Installations\Anaconda3\lib\http\client.py", line 257, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "F:\Software_Installations\Anaconda3\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py", line 302, in recv_into
    raise SocketError(str(e))
OSError: (10060, 'WSAETIMEDOUT')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:\Software_Installations\Anaconda3\lib\site-packages\requests\adapters.py", line 449, in send
    timeout=timeout
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\util\retry.py", line 368, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\packages\six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "F:\Software_Installations\Anaconda3\lib\http\client.py", line 1321, in getresponse
    response.begin()
  File "F:\Software_Installations\Anaconda3\lib\http\client.py", line 296, in begin
    version, status, reason = self._read_status()
  File "F:\Software_Installations\Anaconda3\lib\http\client.py", line 257, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "F:\Software_Installations\Anaconda3\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py", line 302, in recv_into
    raise SocketError(str(e))
urllib3.exceptions.ProtocolError: ('Connection aborted.', OSError("(10060, 'WSAETIMEDOUT')"))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:\Software_Installations\Anaconda3\lib\threading.py", line 917, in _bootstrap_inner
    self.run()
  File "F:\Software_Installations\Anaconda3\lib\threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\multitasking\__init__.py", line 102, in _run_via_pool
    return callee(*args, **kwargs)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\yfinance\multi.py", line 167, in _download_one_threaded
    actions, period, interval, prepost, proxy, rounding)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\yfinance\multi.py", line 182, in _download_one
    rounding=rounding, many=True)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\yfinance\base.py", line 150, in history
    data = _requests.get(url=url, params=params, proxies=proxy)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\requests\api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\requests\api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\requests\sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\requests\sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "F:\Software_Installations\Anaconda3\lib\site-packages\requests\adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', OSError("(10060, 'WSAETIMEDOUT')"))

Any idea why i am getting this error randomly every time when i loop to get the stock data? I don't think it has to do something with yahoo finance api because if i run it again it will work for the first few stocks just fine but after few stocks i will get the same error with a different (Exception in thread Thread-NUMBER) so my guess it has to do something with the multi-threading.

1 Answers

I got the same error and upgrading Yahoo Finance did the tricky for me, as suggested by cayman2578 in the GitHub issue here.

pip install yfinance --upgrade --no-cache-dir

Related