1

I stumbled across an issue which causes the below script to throw an error every so often, like every other day on average.

The script is being run 24/7 and dozens of instances similar to it are being run simultaneously. That seems to be relevant because as can be seen from the error, it appears to throw it on another instance (different asset than the one being retrieved).

  • OS: W10
  • Programming Language version: 3.9
  • CCXT version: 1.54.87
import ccxt
import pandas_ta as ta
import config
import schedule
import pandas as pd
from datetime import datetime
import time
import socket

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 250)

exchange = ccxt.binance({
    'apiKey': config.BINANCE_API_KEY,
    'secret': config.BINANCE_API_SECRET,
    'enableRateLimit': True,
    'options': {
        'defaultType': 'future'
    },
})

in_position = False
free_balance = exchange.fetch_free_balance()
used_balance = exchange.fetch_used_balance()
free_usd = (free_balance['USDT'])
used_usd = (used_balance['USDT'])
amount = free_usd + used_usd
quantity = 0
new_quantity = 0


def trigger(df):
// strategy


def algo():
    print(f"Loading data as of {datetime.now().isoformat()}")
    bars = exchange.fetch_ohlcv('BNB/USDT', timeframe='30m', limit=50)
    df = pd.DataFrame(bars, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
    df['time'] = pd.to_datetime(df['time'], unit='ms')
    df.set_index(pd.DatetimeIndex(df['time']), inplace=True)

    trigger(df)


try:
    schedule.every(2).seconds.do(algo)

    while True:
        schedule.run_pending()
        time.sleep(1)
except ConnectionResetError:
    schedule.every(3).seconds.do(algo)

    while True:
        schedule.run_pending()
        time.sleep(1)
except socket.timeout:
    schedule.every(3).seconds.do(algo)

    while True:
        schedule.run_pending()
        time.sleep(1)

Traceback (most recent call last):
  File "C:\Users\", line 699, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "C:\Users\", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\", line 1349, in getresponse
    response.begin()
  File "C:\Users\", line 316, in begin
    version, status, reason = self._read_status()
  File "C:\Users\", line 277, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Users\", line 704, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "C:\Users\", line 1099, in read
    return self._sslobj.read(len, buffer)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\", line 439, in send
    resp = conn.urlopen(
  File "C:\Users\", line 755, in urlopen
    retries = retries.increment(
  File "C:\Users\", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "C:\Users\", line 769, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\", line 699, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "C:\Users\", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\", line 1349, in getresponse
    response.begin()
  File "C:\Users\", line 316, in begin
    version, status, reason = self._read_status()
  File "C:\Users\", line 277, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Users\", line 704, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "C:\Users\", line 1099, in read
    return self._sslobj.read(len, buffer)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\", line 571, in fetch
    response = self.session.request(
  File "C:\Users\", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\", line 655, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\", line 79, in <module>
    schedule.run_pending()
  File "C:\Users\", line 780, in run_pending
    default_scheduler.run_pending()
  File "C:\Users\", line 100, in run_pending
    self._run_job(job)
  File "C:\Users\", line 172, in _run_job
    ret = job.run()
  File "C:\Users\", line 661, in run
    ret = self.job_func()
  File "C:\Users\", line 67, in algo
    bars = exchange.fetch_ohlcv('ADA/USDT', timeframe='15m', limit=300)
  File "C:\Users\", line 1724, in fetch_ohlcv
    response = getattr(self, method)(self.extend(request, params))
  File "C:\Users\", line 463, in inner
    return entry(_self, **inner_kwargs)
  File "C:\Users\", line 4119, in request
    response = self.fetch2(path, api, method, params, headers, body)
  File "C:\Users\", line 486, in fetch2
    return self.fetch(request['url'], request['method'], request['headers'], request['body'])
  File "C:\Users\", line 623, in fetch
    raise NetworkError(details) from e
ccxt.base.errors.NetworkError: binance GET https://fapi.binance.com/fapi/v1/klines?symbol=ADAUSDT&interval=15m&limit=300
desertnaut
  • 57,590
  • 26
  • 140
  • 166
user3080698
  • 61
  • 1
  • 1
  • 9

1 Answers1

0

I got the same problem, my browser was able to access the url fine, but pycharm ran with a network error, i m using proxy to access binance.com , and my pycharm proxy setting is manual and Connection detection is normal

1

vimuth
  • 5,064
  • 33
  • 79
  • 116