0001-general-add-options-to-automatically-retry-requests-.patch
passerelle/base/models.py | ||
---|---|---|
142 | 142 |
manager_form_base_class = GenericConnectorForm |
143 | 143 |
hide_description_fields = [] |
144 | 144 | |
145 |
# self.requests retry behaviour |
|
146 |
retry_count = 0 |
|
147 |
retry_on_status = [429, 500, 502, 503, 504] |
|
148 |
retry_on_methods = ['HEAD', 'GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'TRACE'] |
|
149 |
retry_backoff_factor = 0.5 |
|
150 | ||
145 | 151 |
# permission descriptions |
146 | 152 |
_can_access_description = _('Access is limited to the following API users:') |
147 | 153 |
passerelle/utils/__init__.py | ||
---|---|---|
24 | 24 | |
25 | 25 |
from requests import Session as RequestSession, Response as RequestResponse |
26 | 26 |
from requests.adapters import HTTPAdapter |
27 |
from requests.packages.urllib3.util.retry import Retry |
|
27 | 28 |
from requests.structures import CaseInsensitiveDict |
28 | 29 |
from urllib3.exceptions import InsecureRequestWarning |
29 | 30 | |
31 | ||
30 | 32 |
from django.conf import settings |
31 | 33 |
from django.core.cache import cache |
32 | 34 |
from django.core.exceptions import PermissionDenied |
... | ... | |
243 | 245 |
self.resource = kwargs.pop('resource', None) |
244 | 246 |
super(Request, self).__init__(*args, **kwargs) |
245 | 247 |
if self.resource: |
246 |
adapter = Request.ADAPTER_REGISTRY.setdefault(type(self.resource), HTTPAdapter()) |
|
248 |
if getattr(self.resource, 'retry_count', 0): |
|
249 |
retry_strategy = Retry( |
|
250 |
total=self.resource.retry_count, |
|
251 |
backoff_factor=self.resource.retry_backoff_factor, |
|
252 |
status_forcelist=self.resource.retry_on_status, |
|
253 |
method_whitelist=self.resource.retry_on_methods |
|
254 |
) |
|
255 |
else: |
|
256 |
retry_strategy = 0 |
|
257 |
adapter = Request.ADAPTER_REGISTRY.setdefault(type(self.resource), |
|
258 |
HTTPAdapter(max_retries=retry_strategy)) |
|
247 | 259 |
self.mount('https://', adapter) |
248 | 260 |
self.mount('http://', adapter) |
249 | 261 | |
250 |
- |