python - 如何在 Python 的异常错误上调用重试装饰器
问题描述
我正在使用该retry
模块来处理异常。当我调用 f.write 时,这可能会返回带有错误代码 400-500 的 RateLimitException。我只需要重试代码 401,我该如何实现呢?
(我目前无权访问该库)我可以读取 Exception 的 self.code 属性
import retry
@retry.retry(RateLimitException, tries=3, delay=1, backoff=2)
def write(self, buf, path):
with self._get_client().open(path, 'w') as f:
return f.write(buf)
class RateLimitException(Exception):
"""Holds the message and code from cloud errors."""
def __init__(self, error_response=None):
if error_response:
self.message = error_response.get('message', '')
self.code = error_response.get('code', None)
else:
self.message = ''
self.code = None
# Call the base class constructor with the parameters it needs
super(RateLimitException, self).__init__(self.message)
解决方案
推荐阅读
- java - JAVA VAADIN7 如何防止在某些操作之前关闭窗口,如何让窗口在顶部?
- java - 获取通过反射返回 ArrayList<> 的方法的返回类型
- docker - 同一主机的容器不能互相访问
- r - 如何在R中制作对数分布箱?
- django - 哪种视频格式最适合所有类型的浏览器?
- if-statement - 需要帮助让我的“播放”按钮将用户发送到当前级别
- node.js - 如何在 Node.js 中膨胀和解码 XML?
- php - laravel-如何根据条件自动递增设置id?
- java - 将映射与 Elastic Search 的高级 REST JAVA 客户端异步放置 - 已弃用错误
- git - 如何将 spring-cloud-config 服务器指向 git repo 中的 git 文件夹