单元测试请求重试python

2024-04-26 04:37:50 发布

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

如果端点在返回结果之前超时,我将尝试多次重试请求。代码如下:

def retry_request(self, params, max_retries=3):
    for i in xrange(max_retries):
        try:
            response = requests.get(params)
            break
        except requests.exceptions.Timeout as e:
            raise e

我想对重试进行单元测试,以显示重试逻辑是否有效。有什么想法吗?在


Tags: 代码inselfforresponserequestdefparams
1条回答
网友
1楼 · 发布于 2024-04-26 04:37:50

请求库有自己的重试逻辑。在

试试这样的方法:

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,
                                    pool_maxsize=30))

        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)

相关问题 更多 >