diff --git a/src/caoscrawler/crawl.py b/src/caoscrawler/crawl.py index a79e4434ee8f58fd1cc2646ced85c0d02d3fb66b..8ca845023d598e7a06532c34c03568bbf98a6420 100644 --- a/src/caoscrawler/crawl.py +++ b/src/caoscrawler/crawl.py @@ -1115,42 +1115,28 @@ def crawler_main(crawled_directory_path: str, crawler.run_id) _update_status_record(crawler.run_id, len(inserts), len(updates), status="OK") return 0 - except ForbiddenTransaction as err: - logger.debug(traceback.format_exc()) - logger.error(err) - _update_status_record(crawler.run_id, 0, 0, status="FAILED") - return 1 - except ConverterValidationError as err: - logger.debug(traceback.format_exc()) - logger.error(err) - _update_status_record(crawler.run_id, 0, 0, status="FAILED") - return 1 - except ImpossibleMergeError as err: - logger.debug(traceback.format_exc()) - logger.error( - "Encountered conflicting information when creating Records from the crawled " - f"data:\n\n{err}" - ) - _update_status_record(crawler.run_id, 0, 0, status="FAILED") - return 1 - except TransactionError as err: - logger.debug(traceback.format_exc()) - logger.error(err) - logger.error("Transaction error details:") - for suberr in err.errors: - logger.error("---") - logger.error(suberr.msg) - logger.error(suberr.entity) - return 1 except Exception as err: logger.debug(traceback.format_exc()) logger.error(err) - - if "SHARED_DIR" in os.environ: - # pylint: disable=E0601 - domain = get_config_setting("public_host_url") - logger.error("Unexpected Error: Please tell your administrator about this and provide " - f"the following path.\n{get_shared_resource_link(domain, debuglog_public)}") + # Special treatment for known error types + if isinstance(err, ImpossibleMergeError): + logger.error( + "Encountered conflicting information when creating Records from the crawled " + f"data:\n\n{err}" + ) + elif isinstance(err, TransactionError): + logger.error("Transaction error details:") + for suberr in err.errors: + logger.error("---") + logger.error(suberr.msg) + logger.error(suberr.entity) + # Unkown errors get a special message + elif not isinstance(err, (ConverterValidationError, ForbiddenTransaction)): + if "SHARED_DIR" in os.environ: + # pylint: disable=E0601 + domain = get_config_setting("public_host_url") + logger.error("Unexpected Error: Please tell your administrator about this and provide " + f"the following path.\n{get_shared_resource_link(domain, debuglog_public)}") _update_status_record(crawler.run_id, 0, 0, status="FAILED") return 1