2016-05-04 4 views
0

我々は(のCRM、メールプロバイダなど)外部依存関係を呼び出して、ユーザーオブジェクトには、いくつかのDjangoのポストセーブ信号を持っています。これらの呼び出しは素敵な呼び出しであり、発生した場合にユーザーをブロックしたり、エラーを起こすべきではありません。普遍的にDjangoシグナルのエラーを抑制する?

ライブラリーにはさまざまなエラー状態(外部サービス、不良キーなどに接続できない)があり、モデル化するのに苦労しました。そのため、例外抑制デコレータを作成しました。彼らは決してブロックしません。

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. これを提供できる組み込み機能はありますか?私はこれを許可したコンテクストブロック構造のある を見たが、デコレータは見ていなかった。

答えて

1

あなたのコードでは、私には正常に見えます。私は多くのプロジェクトでtry-except-elseブロックを使用しており、それは私に多くの苦痛をもたらしました。私は、Pythonには専門家でないので、私はこれを行うのより良い方法があるかどうかわからないんだけど、このコードは十分に良いことがあります。

関連する問題