Features: added a 1h timeout to every requests

This commit is contained in:
Michael Bideau 2019-07-15 13:14:38 +02:00
parent ee0173698e
commit 18e57caf99
1 changed files with 31 additions and 6 deletions

View File

@ -111,6 +111,7 @@ class ForwardFile(models.Model):
class AtrealOpenads(BaseResource):
"""API that proxy/relay communications with/to openADS."""
collectivite = models.CharField(_('Collectivity (identifier)'), max_length=255,
help_text=_('ex: Marseille, or ex: 3'), default='', blank=True)
openADS_API_login = models.CharField(_('openADS API login'), max_length=255,
@ -122,6 +123,8 @@ class AtrealOpenads(BaseResource):
extra_debug = models.BooleanField(_('Extra debug'),
help_text=_('ex: True'), default=0)
openADS_API_timeout = 3600
category = _('Business Process Connectors')
api_description = _('''
@ -147,7 +150,11 @@ class AtrealOpenads(BaseResource):
def check_status(self):
"""Check avaibility of the openADS.API service."""
url = urlparse.urljoin(self.openADS_API_url, '__api__')
response = self.requests.get(url, auth=(self.openADS_API_login, self.openADS_API_password))
response = self.requests.get(
url,
auth=(self.openADS_API_login, self.openADS_API_password),
timeout=self.penADS_API_timeout
)
response.raise_for_status()
return {'response': response.status_code}
@ -261,9 +268,14 @@ class AtrealOpenads(BaseResource):
self.debug("----- files (end) -----")
url = urlparse.urljoin(self.openADS_API_url, '/dossiers/%s' % type_dossier)
response = self.requests.post(url, json=payload, auth=(self.openADS_API_login, self.openADS_API_password))
response = self.requests.post(
url,
json=payload,
auth=(self.openADS_API_login, self.openADS_API_password),
timeout=self.penADS_API_timeout
)
if response.status_code // 100 != 2:
error = self.get_response_error(response)
error = self.get_response_error(response, timeout=self.penADS_API_timeout)
self.logger.warning("Request [POST] '%s' failed with error: '%s'", url, error)
raise APIError(error)
try:
@ -350,7 +362,11 @@ class AtrealOpenads(BaseResource):
})
def get_dossier(self, request, type_dossier, numero_dossier, *args, **kwargs):
url = urlparse.urljoin(self.openADS_API_url, '/dossier/%s/%s' % (type_dossier, numero_dossier))
response = self.requests.get(url, auth=(self.openADS_API_login, self.openADS_API_password))
response = self.requests.get(
url,
auth=(self.openADS_API_login, self.openADS_API_password),
timeout=self.penADS_API_timeout
)
if response.status_code // 100 != 2:
error = self.get_response_error(response)
self.logger.warning("Request [GET] '%s' failed with error: '%s'", url, error)
@ -464,7 +480,11 @@ class AtrealOpenads(BaseResource):
url = urlparse.urljoin(
self.openADS_API_url,
'/dossier/%s/%s/courrier/%s' % (type_dossier, numero_dossier, 'dia_renonciation_preempter'))
response = self.requests.get(url, auth=(self.openADS_API_login, self.openADS_API_password))
response = self.requests.get(
url,
auth=(self.openADS_API_login, self.openADS_API_password),
timeout=self.penADS_API_timeout
)
if response.status_code // 100 != 2:
error = self.get_response_error(response)
self.logger.warning("Request [GET] '%s' failed with error: '%s'", url, error)
@ -541,7 +561,12 @@ class AtrealOpenads(BaseResource):
p['b64_content'] = '<b64 content>'
self.debug("upload_user_files() payload is: %s", str(debug_payload))
url = urlparse.urljoin(self.openADS_API_url, '/dossier/%s/%s/files' % (type_dossier, numero_dossier))
response = self.requests.post(url, json=payload, auth=(self.openADS_API_login, self.openADS_API_password))
response = self.requests.post(
url,
json=payload,
auth=(self.openADS_API_login, self.openADS_API_password),
timeout=self.penADS_API_timeout
)
if response.status_code // 100 != 2:
for fwd_file in fwd_files:
fwd_file.upload_status = 'failed'