From 35653d77011c714298c6dbb8f8ab3e79f4f77ba4 Mon Sep 17 00:00:00 2001 From: Jean-Marie Favreau Date: Mon, 17 Feb 2025 09:55:00 +0100 Subject: [PATCH] On restart selenium s'il y a une exception --- src/agenda_culturel/celery.py | 18 +++++++++++++++--- src/agenda_culturel/import_tasks/downloader.py | 2 ++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/agenda_culturel/celery.py b/src/agenda_culturel/celery.py index e2bb463..bd76442 100644 --- a/src/agenda_culturel/celery.py +++ b/src/agenda_culturel/celery.py @@ -110,6 +110,13 @@ class ChromiumTask(Task): self._chm = ChromiumHeadlessDownloader() return self._chm + def restartDownloader(self): + logger.warning('Restart selenium') + if not self._chm is None: + del self._chm + self._chm = ChromiumHeadlessDownloader() + + def run_recurrent_import_internal(rimport, downloader, req_id): from agenda_culturel.models import RecurrentImport, BatchImportation @@ -202,10 +209,11 @@ def run_recurrent_import_internal(rimport, downloader, req_id): # finally, close task close_import_task(req_id, success, error_message, importer) + return True except Exception as e: logger.error(e) close_import_task(req_id, False, e, importer) - + return False @app.task(base=ChromiumTask, bind=True) @@ -237,10 +245,14 @@ def run_recurrent_import(self, pklist): if rimport.downloader in [RecurrentImport.DOWNLOADER.CHROMIUMHEADLESS, RecurrentImport.DOWNLOADER.CHROMIUMHEADLESSPAUSE]: with memcache_chromium_lock(self.app.oid) as acquired: if acquired: - run_recurrent_import_internal(rimport, downloader, self.request.id) + valid = run_recurrent_import_internal(rimport, downloader, self.request.id) + if not valid: + self.restartDownloader() return pklist[1:] if is_list else True else: - run_recurrent_import_internal(rimport, downloader, self.request.id) + valid = run_recurrent_import_internal(rimport, downloader, self.request.id) + if not valid: + self.restartDownloader() return pklist[1:] if is_list else True try: diff --git a/src/agenda_culturel/import_tasks/downloader.py b/src/agenda_culturel/import_tasks/downloader.py index 7b60f57..65b29ea 100644 --- a/src/agenda_culturel/import_tasks/downloader.py +++ b/src/agenda_culturel/import_tasks/downloader.py @@ -97,6 +97,8 @@ class ChromiumHeadlessDownloader(Downloader): self.service = Service("/usr/bin/chromedriver") self.driver = webdriver.Chrome(service=self.service, options=self.options) + def __del__(self): + self.driver.quit() def screenshot(self, url, path_image): print("Screenshot {}".format(url))