普遍压制Django信号的错误?

时间:2016-05-04 04:28:14

标签: python django

我们在用户对象上有一些Django保存后信号,这些信号调用外部依赖项(CRM,邮件提供商等)。这些调用很有用,如果用户发生,则不应该阻止或错误。

库有各种错误状态(无法连接外部服务,坏键等),模型很难,所以我做了一个异常抑制装饰器,我可以应用于信号(s )所以他们永远不会阻止。

def exception_suppressor()
    def suppressor(*args, **kwargs):
         try:
             return fn(*args, **kwargs)
         except Exception as e:
             LOGGER.info("Suppressing exception: " + str(e))
     return suppressor
  1. 这是广泛的吗?有更好的方法吗?
  2. 是否有任何内置可以提供此功能?我看到了一些 with-context-block构造允许这个,但不是装饰者。

1 个答案:

答案 0 :(得分:1)

您的代码对我来说很好。我在很多项目中都使用了try-except-else块,这给我带来了很大的痛苦。我不是Python方面的专家,所以我不确定是否有更好的方法可以做到这一点,但这段代码应该足够好。