ドキュメントで、Flask エラーに関するメールを送信する非常に簡単な方法を見ました。私の質問は、これがアプリのパフォーマンスにかなり影響するかどうかです。のように、私のアプリを実行しているプロセスは実際にメールを送信していますか?
私の現在の推測では、SMTP は別のプロセスで実行されているサーバーであるため、電子メールを適切にキューに入れ、送信できるときに送信します。つまり、アプリのパフォーマンスには影響しません。
さて、SMTPHandler
から継承しlogging.Handler
ます。を見ると、複数のスレッドで呼び出さlogging.Handler
れたことを処理するためにいくつかのことを行いますが、複数のスレッドを生成することは何もしません。ロギングの呼び出しは、呼び出されたスレッドで発生します。したがって、コードを正しく読んでいる場合、ロギング呼び出しは、それが完了するまで実行中のスレッドをブロックします (つまり、SMTP サーバーが応答するのに 30 秒かかる場合、エラー スレッドは.time_to_error + 30 seconds + time_to_send + time_to_respond_to_request_with_500
つまり、コードを読み間違えている可能性があります。ただし、帯域外のメッセージの送信を使用SysLogHandler
して処理させる方がよいでしょう。syslog