我正在尝试使用python wrapper发布到API。
当我从pycharm
中的库中进入以下代码时 # Make the request
self._make_request(
self.BASE_URI + method,
params.encode("utf-8"),
)
它会跳转到此重试方法
def retry(ExceptionToCheck, tries=3, delay=2, backoff=2):
"""
Retry decorator published by Saltry Crane.
http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
"""
我认为它会因为_make_request中的以下装饰器而跳转到那里(虽然我还不了解Python装饰器):
@retry(Exception, tries=3)
def _make_request(self, url, params=None, opener=None):
然而,我处于死胡同,因为如果我在@retry中设置断点并查看ExceptionToCheck,它只显示一个没有消息且没有args的空白BaseException。
这段代码是否会以某种方式跳过_make_request方法(这是pycharm中的步骤),或者以某种方式跳转到@retry。
我可以采取以下哪些步骤来调试它?
答案 0 :(得分:1)
继续踩踏 - retry
作为_make_request
的包装应用,最终会调用该代码。
答案 1 :(得分:0)
装饰者包装一个功能。这意味着,当您调用具有装饰器的函数时,将调用装饰器函数。但是装饰器功能将(通常)依次调用装饰的功能。因此,您需要一直踩到retry
,直到它到达调用原始函数的位。由于原始版本是装饰器的参数,因此您可能会看到类似return func(*args)
或其他内容的内容。