From 0eefd1ef48edb8bedde24153e5189a7e4c4b1c0d Mon Sep 17 00:00:00 2001 From: Quentin Defenouillere Date: Thu, 9 May 2019 19:11:00 +0200 Subject: [PATCH] [caissedepargne] Add try/except on Loans request The Loans request often crashes so we have to try several times to avoid the 520 error (Unavailable). Closes: 30311@sibi --- modules/caissedepargne/browser.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/modules/caissedepargne/browser.py b/modules/caissedepargne/browser.py index 2758019cdd..1da54ec992 100644 --- a/modules/caissedepargne/browser.py +++ b/modules/caissedepargne/browser.py @@ -32,7 +32,7 @@ from weboob.capabilities.bank import Account, AddRecipientStep, Recipient, TransferBankError, Transaction, TransferStep from weboob.capabilities.base import NotAvailable from weboob.capabilities.profile import Profile -from weboob.browser.exceptions import BrowserHTTPNotFound, ClientError +from weboob.browser.exceptions import BrowserHTTPNotFound, ClientError, ServerError from weboob.exceptions import ( BrowserIncorrectPassword, BrowserUnavailable, BrowserHTTPError, BrowserPasswordExpired, ActionNeeded ) @@ -445,15 +445,26 @@ def get_loans_list(self): if self.page.check_no_accounts() or self.page.check_no_loans(): return [] - for _ in range(3): - self.home_tache.go(tache='CRESYNT0') + access_to_loans = False + max_count = 0 + while not access_to_loans and max_count < 5: + for _ in range(3): + self.home_tache.go(tache='CRESYNT0') + if self.home.is_here(): + break if self.home.is_here(): - break - - if self.home.is_here(): - if not self.page.is_access_error(): - self.loans = list(self.page.get_real_estate_loans()) - self.loans.extend(self.page.get_loan_list()) + if not self.page.is_access_error(): + # The server often returns a 520 error (Undefined): + try: + self.loans = list(self.page.get_real_estate_loans()) + self.loans.extend(self.page.get_loan_list()) + except ServerError: + self.logger.warning('Access to loans failed, we try again') + max_count += 1 + else: + access_to_loans = True + if not access_to_loans: + raise BrowserUnavailable() for _ in range(3): try: -- GitLab