2024-04-26 04:37:50 发布
网友
如果端点在返回结果之前超时,我将尝试多次重试请求。代码如下:
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
我想对重试进行单元测试,以显示重试逻辑是否有效。有什么想法吗?在
请求库有自己的重试逻辑。在
试试这样的方法:
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)
请求库有自己的重试逻辑。在
试试这样的方法:
相关问题 更多 >
编程相关推荐