我如何调试这个Python代码?

2024-10-04 09:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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请求中有以下decorator(尽管我还不了解Python decorators):

@retry(Exception, tries=3)
def _make_request(self, url, params=None, opener=None):

但是,我现在处于死胡同,因为如果我在@retry中设置断点并查看ExceptionToCheck,它只会显示一个没有消息和参数的空BaseException。你知道吗

这段代码是否以某种方式跳过了\u make\u request方法(这是pycharm中的step into所暗示的),或者是否以某种方式跳转到@retry。你知道吗

接下来我可以采取什么步骤来调试它?你知道吗


Tags: 方法代码selfnonemakerequestdef方式
2条回答

Keep stepping-retry作为_make_request的包装器应用,它最终将调用该代码。你知道吗

一个decorator包装一个函数。这意味着,当您调用具有decorator的函数时,将调用decorator函数。但是decorator函数随后(通常)会依次调用decorated函数。因此,您需要不断地遍历retry,直到到达它调用原始函数的位为止。因为original是decorator的一个参数,所以您可能会看到return func(*args)之类的内容。你知道吗

相关问题 更多 >