From fd40765e42bf7156b6758b88a94ed841b6be1a47 Mon Sep 17 00:00:00 2001 From: PLPeeters Date: Mon, 16 Dec 2019 13:52:11 +0100 Subject: [PATCH] Tweak logging of exceptions to exclude traceback if we have a default factory --- reppy/cache/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/reppy/cache/__init__.py b/reppy/cache/__init__.py index 0dfd8bc..489c0df 100644 --- a/reppy/cache/__init__.py +++ b/reppy/cache/__init__.py @@ -7,6 +7,7 @@ from cachetools import LRUCache from .policy import DefaultObjectPolicy, ReraiseExceptionPolicy +from ..exceptions import ReadTimeout from ..robots import Robots, AllowNone, Agent from .. import logger @@ -65,7 +66,13 @@ def factory(self, url): try: return self.fetch(url) except BaseException as exc: - logger.exception('Reppy cache fetch error on %s' % url) + # Log the whole stack trace only if the exception is anything other than a ReadTimeout + # or if we do not have a default factory + if isinstance(exc, ReadTimeout) and isinstance(self.cache_policy, DefaultObjectPolicy): + logger.info('Reppy cache fetch timeout on %s; using factory.' % url) + else: + logger.exception('Reppy cache fetch error on %s' % url) + return self.cache_policy.exception(url, exc) def fetch(self, url):