# traced # {{{ 
def traced(func):
    def wrapper(*args, **kw):
        start = time.time()
        e = None
        try:
            ret = func(*args, **kw)
        except Exception, e:
            pass
        time_taken = time.time() - start
        logger.info(
            "func=%s, func.__name__=%s, args=%s, kw=%s, return=%s, time=%s" % (
                func, func.__name__, args, kw, ret, time_taken
            )
        )
        if e:
            logger.exception(e)
            raise e
        return ret
    return wrapper
# }}}