2

私のフラスコ Web アプリケーションでは、セッション処理にビーカー ライブラリを使用しています。次のコードでは、なんらかの理由で実稼働サーバーが例外を発生させますが、私のローカル PC は問題なく動作します。

import sys

...

try:
    beaker_session = request.environ['beaker.session']
    beaker_session['user_id'] = user.id 
    beaker_session.save()
except:
    flash(sys.exc_info()[0])
    return render_template('main/login.html')

ローカル コンピューターは、例外なく、期待どおりにセッションを保存します。本番サーバー (RedHat OpenShift) は、「beaker_session.save()」行で正確にエラーを発生させます。しかし、フラッシュ メッセージでログイン ページを表示する代わりに、Internal Server Error 500 がスローされます。ビーカーのバックエンド URL (mysql db) を確認しましたが、コードの他の部分で機能するため、新しく登録したユーザーを永続化するため、問題はありません。だから、私の質問は 1) なぜ except part が機能しないのですか? 2) ビーカーがセッションを保存できない理由。ありがとうございました。

4

2 に答える 2

0

デフォルトでは、Flask は例外を飲み込みます。アプリケーションの一番上に次の行を必ず追加してください。

app.config['PROPAGATE_EXCEPTIONS'] = True

于 2013-01-07T16:46:08.267 に答える