UrlService dont respect Retry-After header by default (#5082)
* disable respecting retry_after_header * fix
Ilya Mashchenko committed
Jan 2, 2019 at 13:28 UTC
d5fb2be8aeeeb37b6c31af91fb3d8be625fa466a
1 file changed
+13
-6
collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py
+13
-6
@@ -26,6 +26,7 @@ class UrlService(SimpleService):
26
self.method = self.configuration.get('method', 'GET')
27
self.header = self.configuration.get('header')
28
self.request_timeout = self.configuration.get('timeout', 1)
29
+ self.respect_retry_after_header = self.configuration.get('respect_retry_after_header')
30
self.tls_verify = self.configuration.get('tls_verify')
31
self.tls_ca_file = self.configuration.get('tls_ca_file')
32
self.tls_key_file = self.configuration.get('tls_key_file')
@@ -111,12 +112,18 @@ class UrlService(SimpleService):
112
"""
113
url = url or self.url
114
manager = manager or self._manager
114
- response = manager.request(method=self.method,
115
- url=url,
116
- timeout=self.request_timeout,
117
- retries=retries,
118
- headers=manager.headers,
119
- redirect=redirect)
115
+ retry = urllib3.Retry(retries)
116
+ if hasattr(retry, 'respect_retry_after_header'):
117
+ retry.respect_retry_after_header = bool(self.respect_retry_after_header)
118
+
119
+ response = manager.request(
120
+ method=self.method,
121
+ url=url,
122
+ timeout=self.request_timeout,
123
+ retries=retry,
124
+ headers=manager.headers,
125
+ redirect=redirect,
126
+ )
127
if isinstance(response.data, str):
128
return response.status, response.data
129
return response.status, response.data.decode()