python - 发生错误时有没有办法防止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 代码。
解决方案
实现重试的基本概念try/except
是在操作成功时有一个循环中断:
while True:
try:
result = submit_request()
break
except RequestFailedError:
sleep(1)
# do stuff with result
在现实生活中,您可能会限制重试的次数而不是永远这样做while True
,并且您可能会改变延迟的长度,这可能取决于失败的性质。
推荐阅读
- python - 当索引不像 auto_increment 时如何获取 pandas 行号。
- python - 是否可以在 Anaconda 环境中使用自定义构建 cpython?
- python - 如何在熊猫数据框中通过两列从组中获取最大值并在第三列中求和?
- c - 图片编程 使用 C 计数器上下
- javascript - Webpack devserver 代理,如何避免 401 错误?
- javascript - Angular JS 的 IOS pin 用户界面
- python - SqlLite 与 SqlAlchemy CreateTable 导致数据库被锁定
- angular - 用''按日期排序表
- android - ImageDecoder 与 BitmapFactory
- reactjs - 如何在草稿js中转换字符串