import asyncio
import logging
from caspia.meadow import errors as m_errors
from caspia.reactive import Observable
from caspia.reactive import errors as r_errors
logger = logging.getLogger(__name__)
[docs]def exception_handler(observable, exception, stack, **kwargs):
try:
raise exception
except (r_errors.ValueNotReady, m_errors.MeadowError, asyncio.TimeoutError) as e:
logger.warning('While processing obserer on %r: %r', observable, e)
except Exception as e: # pylint: disable=broad-except
logger.exception('Exception when processing observer on %r: %r', observable, e)
Observable.exception_handler = exception_handler