5

Flaskがすべての構文エラーで終了しないように使用するsimple-serverを構成する方法はありますか?

app = Flask(__name__)
app.run(host='0.0.0.0', debug=True, use_debugger=True, passthrough_errors=False);

現在、私はこのセットアップをシンプルサーバーに使用しています。passthrough_errorsをFalseに設定すると、ほとんどのエラーが実際にプロセスを存続させて、対話型デバッガーを使用できるようになりますが、構文エラーはプログラムを終了します。さまざまな構成値を試しましたが、機能するものは見つかりませんでした。ありがとう!

4

2 に答える 2

5

この正確な問題を解決するために、 Flask-Failsafe拡張機能を投稿しました。

私はいつもこれにぶつかり、解決策を探して以前にあなたの投稿に出くわしました. 少し実験した後、失敗した場合でもリローダーが動作し続けるように、初期化コードをラップするために使用できるデコレーターをハックしました。それをチェックして、あなたの考えを教えてください。

于 2012-09-15T00:51:16.793 に答える
3

Python のドキュメントによると、次の 2 つのタイプまたはエラーがあります。

  1. 構文エラー
  2. 例外

構文エラーは解析時間中に生成されます (その時点ではコード実際には実行されないため、解析時間はコードが実際に実行されるランタイムではないため、エラーをキャッチする可能性はありません)。

構文エラーをキャッチできる唯一の方法は、exec関数 (Python コードの文字列を実行する)の引数として指定されたコード内でエラーが発生した場合です。

>>> try:
...     exec('x===6')
... except SyntaxError:
...     print('Hello!')
...
Hello!

しかし、自分が何をしているのかを本当に理解している場合にのみ、exec() を使用することを覚えておく必要があります。特にユーザー入力に依存する場合は、exec() を使用することはまったくお勧めしません。

于 2012-08-06T18:26:25.617 に答える