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.