小编Gil*_*nap的帖子

Python 请求:如何确定 MaxRetries 异常的响应代码

当我的 get 或 post 出现错误响应直到超过最大重试次数时,我想知道问题的原因。

我在下面有一个示例测试。这会按预期抛出 MaxRetriesError。然而,原来的HTTPError似乎丢失了。

from requests import Session, exceptions
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
from unittest import TestCase
import logging


class TestRequests(TestCase):

    def test_retries(self):
        session = Session()
        retries = Retry(total=5,
                        backoff_factor=0.1,
                        status_forcelist=[500, 502, 503, 504],
                        method_whitelist=frozenset(['GET', 'POST']))

        session.mount('https://', HTTPAdapter(max_retries=retries))
        session.mount('http://', HTTPAdapter(max_retries=retries))

        try:
            result = session.get('https://httpbin.org/status/500',
                                 stream=True,
                                 timeout=2)
            print(result)
        except exceptions.HTTPError as e:
            logging.error('http', exc_info=e)
        except exceptions.RetryError as e:
            logging.error('retry', exc_info=e)
Run Code Online (Sandbox Code Playgroud)

Traceback 显示以下信息,它仅追溯到最后一个 RetryError,而不是 HTTPError。异常的字符串确实提到了响应代码,但解析错误消息字符串并不是一种可靠的方法。

ERROR:root:retry
Traceback (most recent call last):
  File "/home/giles/venv/gphotos-sync3/lib/python3.6/site-packages/requests/adapters.py", line 449, …
Run Code Online (Sandbox Code Playgroud)

python python-requests

5
推荐指数
1
解决办法
3941
查看次数

标签 统计

python ×1

python-requests ×1