Django の電子メールエラーレポートを手動でトリガーする 質問する

Django の電子メールエラーレポートを手動でトリガーする 質問する

Django エラー報告キャッチされていない例外を電子メールで処理し、(オプションで) ユーザーにわかりやすい 500 エラー ページを表示します。

これは非常にうまく機能しますが、いくつかのケースでは、ユーザーが業務を中断することなく継続できるようにしながら、例外に関する電子メール エラー レポートを Django から送信してもらいたい場合があります。

つまり、例外をキャッチした場合でも、手動で電子メールエラーレポートを送信できますか?

もちろん、エラー レポート メールを手動で生成するのは避けたいです。

ベストアンサー1

request次のコードを使用して、および例外に関する電子メールを手動で送信できますe

import sys
import traceback
from django.core import mail
from django.views.debug import ExceptionReporter

def send_manually_exception_email(request, e):
    exc_info = sys.exc_info()
    reporter = ExceptionReporter(request, is_email=True, *exc_info)
    subject = e.message.replace('\n', '\\n').replace('\r', '\\r')[:989]
    message = "%s\n\n%s" % (
        '\n'.join(traceback.format_exception(*exc_info)),
        reporter.filter.get_request_repr(request)
    )
    mail.mail_admins(
        subject, message, fail_silently=True,
        html_message=reporter.get_traceback_html()
    )

次のようなビューでテストできます。

def test_view(request):
    try:
        raise Exception
    except Exception as e:
        send_manually_exception_email(request, e)

おすすめ記事