diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cef3c6b7b997ecdcfdfa90ed3694b928b0fd8a9..3618c3fec9e9cab7c48e9d2182b364d14fb97b38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,7 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed ### ### Fixed ### - +- An exception in collect_information does no longer lead to a break down. * Fixed an issue where `caosadvancedtools.cache.UpdateCache` would cause an `sqlite3.IntegrityError` if more than one change was cached for the same entity. diff --git a/src/caosadvancedtools/crawler.py b/src/caosadvancedtools/crawler.py index a5ed4caab8cc49c5d4801835927f4e005572a309..631f12286138ffbe72f1cc5e0dda1aadb711ed35 100644 --- a/src/caosadvancedtools/crawler.py +++ b/src/caosadvancedtools/crawler.py @@ -215,10 +215,36 @@ class Crawler(object): errors_occured = True tbs.append(e) + logger.debug(separated("Number of Cfoods: "+str(len(cfoods)))) logger.debug(separated("CFoods are collecting information...")) + remove_cfoods = [] + for cfood in cfoods: - cfood.collect_information() + try: + cfood.collect_information() + except DataInconsistencyError as e: + logger.debug(traceback.format_exc()) + logger.debug(e) + remove_cfoods.append(cfood) + except Exception as e: + try: + DataModelProblems.evaluate_exception(e) + except BaseException: + pass + logger.debug("Failed during execution of {}!".format( + Cfood.__name__)) + logger.debug(traceback.format_exc()) + logger.debug(e) + remove_cfoods.append(cfood) + + if self.abort_on_exception: + raise e + + for rm in remove_cfoods: + cfoods.remove(rm) + logger.debug("Removed {} due to an Error in " + "collect_information".format(str(rm))) logger.debug( separated("Trying to attach further items to created CFoods"))