Декоратор для безопасного запуска функции (подавления и логгинга исключений)

def safely(default=None, log=None):
    '''
    Декоратор, игнорируем исключения
        **default = значение возвращаемое при ошибке
        **log = функция для логгинга трейсбэков (например logging.error)
    '''
    def decorator(func):
        def wrapper(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except (KeyboardInterrupt, SystemExit):
                raise
            except Exception, ex:
                if log:
                    log(traceback.format_exc())
                return default
        return wrapper
    return decorator