4

Pythonで500エラーが発生したときに管理者にメールを送信するにはどうすればよいですか.

私が使用している Web フレームワークは「ボトル」です。

4

2 に答える 2

8

次のように、@error(code)デコレータを使用してエラー処理ページを定義するだけです。

from bottle import run, error, route

@error(500)
def handle_500_error(code):
  # add mail send code here
  return "Error message here"

@route("/test_500")
def cause_error():
  raise Exception

run()

に移動し/test_500て実際の動作を確認してください

もちろん、他のページと同じように、エラー ページのテンプレートを使用できます。エラー ハンドラーを使用しているときに、組み込みのボトル ​​エラー ページを取得する方法があるかどうかはわかりません。

編集:

どうやら、最新のボトル ​​v0.8 を使用している場合、@errorデコレータを適用する関数は、エラー コードではなくbottle.HTTPError、例外とトレースバックを含むオブジェクトをパラメータとして受け取ります。

または、ここで説明されているように に設定bottle.app().catchallして例外を処理しないようにボトルを設定し、適切な WSGI ミドルウェアを使用してそれらを処理し、電子メールを送信することもできます (たとえば、このようなもの)。False

于 2010-07-24T15:06:01.983 に答える
1

以下は、ボトルのドキュメントからの行です。

以外の未処理の例外はすべてbottle.HTTPError500 Internal Server Error 応答になるため、WSGI サーバーがクラッシュすることはありません。

このことから判断すると、これらExceptionの s をキャッチして、関係者に電子メールを送信するコードを作成する必要があります。コードがtryブロックに入り、例外のコードがいくつかあり、次に、目的の電子メールを送信するbottle.HTTPError他のすべての をキャッチするコードがあります。Exception

于 2010-07-24T11:19:43.060 に答える