美文网首页
一个修饰器 safe

一个修饰器 safe

作者: Lupino | 来源:发表于2021-10-02 23:34 被阅读0次

在 python 中希望函数的执行不管任何异常的能捕获到,并且能出日志,很多的函数都需要,那么我们需要有一个修饰器,在需要安全执行的时候添加一个 @safe 就可以了。修饰器代码如下:

def safe(log_exc = True, log_err = False, raised = False, defval=None):
    def _safe(func):
        async def __safe(*args,
                safe_log_exc=log_exc,
                safe_log_err=log_err,
                safe_raised=raised,
                safe_defval=defval,
                **kwargs):
            try:
                return await func(*args, **kwargs)
            except Exception as e:
                if safe_log_exc:
                    logger.exception(e)
                if safe_log_err:
                    logger.error(e)
                if safe_raised:
                    raise e
                return safe_defval
        return __safe
    return _safe

使用案例如下:

@safe()
async def some_function():
    pass

我们定义了默认的输出模式,可以通过给safe传参数来定制其行为。
当我们调用函数的时候需要他输出与默认不一样的异常日子的时候,
我们可以输入 safe_xxx 的参数来修改函数的异常输出行为。

相关文章

  • 一个修饰器 safe

    在 python 中希望函数的执行不管任何异常的能捕获到,并且能出日志,很多的函数都需要,那么我们需要有一个修饰器...

  • 类的修饰器

    是什么 修饰器是一个对类进行处理的函数。修饰器不仅可以修饰类,还可以修饰类的属性,但是修饰器不能用于函数。 怎么用...

  • es6学习笔记整理(十六)Decorators

    Decorator修饰器 修饰器是一个函数用来修改类的行为: 1、修饰器是一个函数 2、修改行为 3、修改类的行为...

  • ES6-修饰器

    首先放一段示例代码 代码中@testable即为一个修饰器。可以看到,修饰器本质上是一个函数。将类作为修饰器函数的...

  • es6 修饰器

    写在前面,因为function存在变量提升,所以修饰器是只能修饰类,而不能修饰函数 修饰器是一个函数,用来修改类的...

  • 修饰器

    函数修饰符@,在函数定义时使用,放在函数前一行,对下一行的函数起修饰(修改)作用。被修饰函数会作为参数传递给修饰函...

  • 修饰器

    类的修饰 § ⇧ 许多面向对象的语言都有修饰器(Decorator)函数,用来修改类的行为。目前,有一个提案将这项...

  • 修饰器

    一、Babel 环境配置 安装依赖 配置 .babelrc 文件 运行文件 Babel 的官方网站提供一个在线转码...

  • 修饰器

    内置修饰器: staticmethod、classmethod和property 作用:把类中定义的实例方法变成静...

  • python修饰器的特殊用法

    最基本的修饰器包括了无参数的修饰器和带参数的修饰器,这两种修饰器都是针对函数的,讲解的博客已经很多了,就不再赘述了...

网友评论

      本文标题:一个修饰器 safe

      本文链接:https://www.haomeiwen.com/subject/hxxvnltx.html