borgend/exprotect.py

Tue, 14 Aug 2018 22:57:48 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Tue, 14 Aug 2018 22:57:48 -0500
changeset 116
4a56dda09745
parent 106
a7bdc239ef62
permissions
-rw-r--r--

Pruning scheduling fix

#
# Borgend by Tuomo Valkonen, 2018
#
# Except-catching decocators to catch bugs in callbacks
#

import logging

logger=logging.getLogger(__name__)

def protect_noreturn(fn):
    name=fn.__name__
    def wrapper(*args, **kwargs):
        try:
            fn(*args, **kwargs)
        except:
            logger.exception('bug in ' + name)
    return wrapper


def protect_return(default):
    def wrap(fn):
        name=fn.__name__
        def wrapper(*args, **kwargs):
            try:
                return fn(*args, **kwargs)
            except:
                logger.exception('bug in ' + name)
                return default
        return wrapper
    return wrap

mercurial