flaskファイルでapp.run(debug=True)
を呼び出します。
そして私はそれをuWSGIとnginxで展開しました(私は これらの指示 に従いました)
uwsgi -s /tmp/uwsgi.sock -w flask_file_name:app -H /path/to/virtual/env --chmod-socket 666
しかし、エラーが発生しても、ブラウザやuWSGIログにはデバッグ情報がありません。
何か案は?
フラスコファイル名.py:
from flask import Flask, make_response, Response, jsonify
import json
app = Flask(__name__)
app.debug = True
@app.route("/")
def hello():
return "Hello World!"
if __name__ == '__main__':
app.run()
the Flaskメーリングリスト によると、uWSGI
でFlaskのデバッグオプションを使用することはできません。フォーク環境では使用されないためです。
Flask/werkzeugはWebサーバーにデータを送信しないため、502が表示されます。nginxは502を返します。
UWSGIで--catch-exceptionsオプションを使用してデバッガをエミュレートできます(ただし、本番環境では行わないでください)
したがって、502が表示されるのはそのためです。修正は、実行時に--catch-exceptions
をuWSGI
に追加することです。
この質問は古いですが、今後の参考のためにこれを投稿します...
Werkzeugエラーページをuwsgiで動作させるには、werkzeugのDebuggedApplication
ミドルウェアを使用してみてください。
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
これでうまくいくはずですが、開発環境でのみこれを行うことを忘れないでください。
問題はuwsgi
がapp.run()
を呼び出さないことです。 app()
を呼び出します。したがって、代わりにこれを行うことができます:
from flask import Flask
app = Flask(__name__)
app.debug = True
私にとっては、このように上記の2つの答えを組み合わせた後にのみ機能しました。
from flask import Flask
app = Flask(__name__)
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
app.debug = True