ごmiddleware.pyでは、これを持っている必要があります。それはあなたのエラーを処理する
if asbool(full_stack):
# Handle Python exceptions
app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
# Display error documents for 401, 403, 404 status codes (and
# 500 when debug is disabled)
if asbool(config['debug']):
app = StatusCodeRedirect(app)
else:
app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
。エラーが発生したときに電子メールを送信する場合は、コードのクリティカルセクションで呼び出すヘルパー関数を作成します。ヘルパー関数は、エラーの詳細を電子メールに送信するか、このミドルウェア(ErrorHandler)を書き換えることができます。
ofcあなたは、既存のErrorHandlerにそのヘルパー関数呼び出しを追加することもできますが、私はそれをお勧めしません(既存のlibを変更するには良いプログラミングではありません)。
そのヘルパー関数のコード:
import turbomail
def send_mail(body, author,subject, to):
conf = {
'mail.on': True,
'mail.transport': 'smtp',
'mail.smtp.server': 'smtp.DOMAIN.SMT:25',
}
turbomail.interface.start(conf)
message = turbomail.Message(
author = author,
to = to,
subject = subject,
plain = body,
encoding = "utf-8"
)
message.send()
turbomail.interface.stop()
がちょうど手で例外を発生させた程度、すなわち(SomeMeaningfulException)を上げる方法
私はこれがちょっとしたハックだと感じています。私は、別のメール送信メカニズムを望んでいない、それは失敗する可能性があり、デフォルトのerrormiddlewareのように見て実行されません。とにかく答えてくれてありがとう:-) –