From 4a733e79821f04e06966154772b43f8b643be019 Mon Sep 17 00:00:00 2001 From: Philippine Aylor Date: Thu, 14 Nov 2019 18:04:50 +0100 Subject: [PATCH] [cragr] reconnection process when locate to another space fail While moving to another account space (particulier => profesionnel), some accounts need to reconnect up to six times in a row because we might land on an error 500 page. Closes: 14527@zendesk 14696@zendesk 14735@zendesk --- modules/cragr/api/browser.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/modules/cragr/api/browser.py b/modules/cragr/api/browser.py index 4dcafe0155..e5158f2a81 100644 --- a/modules/cragr/api/browser.py +++ b/modules/cragr/api/browser.py @@ -252,11 +252,11 @@ def check_space_connection(self, contract): # so we might have to retry several times. try: self.go_to_account_space(contract) - except ServerError: + except (ServerError, BrowserUnavailable): self.logger.warning('Server returned error 500 when trying to access space %s, we try again', contract) try: self.go_to_account_space(contract) - except ServerError: + except (ServerError, BrowserUnavailable): return False return True @@ -460,21 +460,22 @@ def switch_account_to_revolving(self, account): @need_login def go_to_account_space(self, contract): # This request often returns a 500 error on this quality website - try: - self.contracts_page.go(space=self.space, id_contract=contract) - except ServerError: - self.logger.warning('Space switch returned a 500 error, try again.') - self.contracts_page.go(space=self.space, id_contract=contract) - if not self.accounts_page.is_here(): - # We have been logged out. - self.do_login() + for tries in range(4): try: self.contracts_page.go(space=self.space, id_contract=contract) except ServerError as e: if e.response.status_code == 500: - raise BrowserUnavailable() - raise - assert self.accounts_page.is_here() + self.logger.warning('Space switch returned a 500 error, try again.') + self.contracts_page.go(space=self.space, id_contract=contract) + else: + raise + if not self.accounts_page.is_here(): + self.logger.warning('We have been loggged out, relogin.') + self.do_login() + else: + return + if tries >= 3: + raise BrowserUnavailable() @need_login def iter_history(self, account, coming=False): -- GitLab