Python Can';出现二进制api(连接)错误时,请不要继续程序
我正在通过AWS-EC2上的Binance api从Binance获取OHLCV数据。 但有时(几天一次)会出现错误“104,‘EconReset’”,程序停止 该程序是用Python3.7.3编写的,在AWS-EC2上运行 代码如下。但此代码无法继续 我想在出现任何api或连接错误时继续运行程序 我应该如何处理这个错误Python Can';出现二进制api(连接)错误时,请不要继续程序,python,api,binance,Python,Api,Binance,我正在通过AWS-EC2上的Binance api从Binance获取OHLCV数据。 但有时(几天一次)会出现错误“104,‘EconReset’”,程序停止 该程序是用Python3.7.3编写的,在AWS-EC2上运行 代码如下。但此代码无法继续 我想在出现任何api或连接错误时继续运行程序 我应该如何处理这个错误 while True: .............. try : klines = client.get_historical_klines
while True:
..............
try :
klines = client.get_historical_klines(ticker_symbol, Client.KLINE_INTERVAL_1MINUTE, _from_str, _until_str)
except BinanceAPIException as e:
print(e)
print('Something went wrong. Error occured at %s. Wait for 1 hour.' % (datetime.datetime.now().astimezone(timezone('UTC'))))
sleep(3600)
continue
..............
所有错误质量如下所示
回溯(最近一次呼叫最后一次):
文件
“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/connectionpool.py”,
第600行,在urlopen中
chunked=chunked)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/connectionpool.py”,
第384行,在请求中
六、从(e,无)文件“”中的第2行“从文件中升起”
“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/connectionpool.py”,
第380行,输入请求
httplib_response=conn.getresponse()文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/http/client.py”,
第1321行,在getresponse中
response.begin()文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/http/client.py”,
第296行,开始
版本,状态,原因=self.\u read\u status()文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/http/client.py”,
第257行,处于读取状态
line=str(self.fp.readline(_MAXLINE+1),“iso-8859-1”)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/socket.py”,第行
589,在readinto中
将self._sock.recv_返回(b)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/contrib/pyopenssl.py”,
第312行,收进
将self.recv_返回(*args,**kwargs)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/contrib/pyopenssl.py”,
第302行,记录到
升高插座错误(str(e))OSError:(104,'ECONREET')
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用上次):文件
“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/requests/adapters.py”,
第449行,发送
超时=超时文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/connectionpool.py”,
第638行,在urlopen中
_stacktrace=sys.exc_info()[2])文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/util/retry.py”,
第368行,增量
引发六个.reaise(type(error)、error、_stacktrace)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/packages/six.py”,
第685行,在reraise中
使用_traceback(tb)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/connectionpool.py”提升值“,
第600行,在urlopen中
chunked=chunked)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/connectionpool.py”,
第384行,在请求中
六、从(e,无)文件“”中的第2行“从文件中升起”
“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/connectionpool.py”,
第380行,输入请求
httplib_response=conn.getresponse()文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/http/client.py”,
第1321行,在getresponse中
response.begin()文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/http/client.py”,
第296行,开始
版本,状态,原因=self.\u read\u status()文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/http/client.py”,
第257行,处于读取状态
line=str(self.fp.readline(_MAXLINE+1),“iso-8859-1”)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/socket.py”,第行
589,在readinto中
将self._sock.recv_返回(b)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/contrib/pyopenssl.py”,
第312行,收进
将self.recv_返回(*args,**kwargs)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/urllib3/contrib/pyopenssl.py”,
第302行,记录到
raise SocketError(str(e))urllib3.exceptions.ProtocolError:(“连接中止”,OSError((104,“EconReset”))
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用上次):文件
“BTC\u USDT\u BINANCE\u minutes.py”,第54行,in
klines=client.get_history_klines(股票代码,client.KLINE间隔,从开始到结束)文件
“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/binance/client.py”,
第765行,在get_历史记录中
第一个\u有效\u ts=self.\u获取\u最早的\u有效\u时间戳(符号,间隔)文件
“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/binance/client.py”,
第723行,输入“获取最早有效时间戳”
endTime=None文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/binance/client.py”,
第705行,在get_Kline中
返回self.\u get('klines',data=params)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/binance/client.py”,
第207行,输入
返回self.\u请求\u api('get',path,signed,version,**kwargs)文件
“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/binance/client.py”,
第181行,在请求api中
返回self.\u请求(方法、uri、签名、**kwargs)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/binance/client.py”,
第175行,输入请求
response=getattr(self.session,method)(uri,**kwargs)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/requests/sessions.py”,
第546行,输入get
返回self.request('GET',url,**kwargs)文件“/home/ec2 user/.pyenv/versions/3.7.3/lib/python3.7/site packages/requests/sessions.py”,
第533行,请求中
resp=self.send(准备,**发送文件“/home/ec2-
...
client = Client(api_key, api_secret)
while True:
...
try :
klines = client.get_historical_klines(ticker_symbol, Client.KLINE_INTERVAL_1MINUTE, _from_str, _until_str)
except BinanceAPIException as e:
print(e)
print('Something went wrong. Error occured at %s. Wait for 1 hour.' % (datetime.datetime.now().astimezone(timezone('UTC'))))
sleep(3600)
client = Client(api_key, api_secret)
continue
...