首页 > 解决方案 > 发生错误时有没有办法防止python应用程序关闭?

问题描述

免责声明:我对 Python 非常陌生,这可能是一个愚蠢的问题,也可能是一个非常严肃的问题。我不知道会发生什么。

我用 python 编辑了一个交易机器人,一切都很好,但有时,可能是因为互联网连接不畅,我收到一个错误,python 应用程序会自行关闭。

错误是这样的(我要***明智的数据)

File "runeth.py", line 217, in <module>
    p = s.my_position(symbol=configeth.SYMBOL)['result']
  File "/home/mosf/.local/lib/python3.8/site-packages/pybit/__init__.py", line 786, in my_position
    return self._submit_request(
  File "/home/mosf/.local/lib/python3.8/site-packages/pybit/__init__.py", line 1368, in _submit_request
    raise FailedRequestError(
pybit.exceptions.FailedRequestError: Bad request. retries exceeded maximum. (ErrCode: 400) (ErrTime: 17:29:57).
Request → GET https://api.bybit.com/v2/private/position/list: {'api_key': '*******', 'recv_window': 5000, 'sign': '************', 'symbol': 'ETHUSD', 'timestamp': 1620408574678}.

因此,在我收到此错误(对交换 API 的请求太多(我猜))后,应用程序会自行关闭。

有没有一种简单的方法来防止这种情况,只是告诉应用程序“稍后再试”而不关闭应用程序?

如果需要,我可以发布“bot”python 代码。

标签: pythonapipython-requests

解决方案


实现重试的基本概念try/except是在操作成功时有一个循环中断:

while True:
   try:
       result = submit_request()
       break
   except RequestFailedError:
       sleep(1)

# do stuff with result

在现实生活中,您可能会限制重试的次数而不是永远这样做while True,并且您可能会改变延迟的长度,这可能取决于失败的性质。


推荐阅读