From 129032588acc04273661a4c1db6aaeb951ab406d Mon Sep 17 00:00:00 2001 From: Quentin Defenouillere Date: Mon, 1 Jul 2019 11:58:15 +0200 Subject: [PATCH] [cragr/api] Handle 500 errors during space switch The cragr server crasher really often when trying to change space or when calling iter_transfer_recipients. Closes: 39997@sibi, 40000@sibi, 40007@sibi --- modules/cragr/api/browser.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/cragr/api/browser.py b/modules/cragr/api/browser.py index af0148a3f9..ee6e30b396 100644 --- a/modules/cragr/api/browser.py +++ b/modules/cragr/api/browser.py @@ -385,12 +385,21 @@ def switch_account_to_revolving(self, account): @need_login def go_to_account_space(self, contract): - self.contracts_page.go(space=self.space, id_contract=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() - self.contracts_page.go(space=self.space, id_contract=contract) - assert self.accounts_page.is_here() + 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) + assert self.accounts_page.is_here() @need_login def iter_history(self, account, coming=False): @@ -648,6 +657,7 @@ def iter_transfer_recipients(self, account, transfer_space_info=None): else: space, operation, referer, _ = self.get_account_transfer_space_info(account) + self.go_to_account_space(account._contract) self.recipients.go(space=space, op=operation, headers={'Referer': referer}) if not self.page.is_sender_account(account.id): -- GitLab