Source code for caspia.pan.exception_handling

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