2012-04-28 7 views
29

フラスコファイルでapp.run(debug=True)と呼んでいます。フラスコデバッグ= TrueはuWSGIを通過するときに機能しません

と私はそれがuWSGIとnginxので展開している(私はthese instructionsを追っ)

uwsgi -s /tmp/uwsgi.sock -w flask_file_name:app -H /path/to/virtual/env --chmod-socket 666 

しかし、私はエラーを取得するとき、私はブラウザやuWSGIログ内の任意のデバッグ情報を得ることはありません。

アイデア?

flask_file_name.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() 
+0

あなたは 'flask_file_name.py'を投稿できますか? –

答えて

23

the Flask mailing listによると、あなたは、uWSGIでフラスコのデバッグオプションを使用することはできません。フラスコ/ WERKZEUGは、ウェブサーバにデータを送信しないので、あなたは( ので、nginxの意志は502

を返しますが、uWSGI で--catch-exceptionsオプションを使用してデバッガをエミュレートすることができ、502を参照してください

プロダクションではしないでください)

だから、あなたが502を見ている理由はそのためです。修正は、実行時に--catch-exceptionsuWSGIに追加することです。

+0

あなたは男です!それはまだそれがuWSGIなしだったようにフォーマットされていませんが、私は今エラーを取得します。本当にありがとう! – Flaviu

+0

はい、下記のgonzによるコメントも見てください。 :) –

19

問題がapp.run()を呼び出すことはありませんuwsgiです。それはapp()を呼び出します。だからではなく、あなたがこれを行うことができます:それはフォークの環境で使用してはならないですので

from flask import Flask 
app = Flask(__name__) 
app.debug = True 
+1

ありがとうございます。それは役に立ちます。これで構文エラーが発生した場合、nginxの静的50x.htmlエラーページにリダイレクトされます。どのようにフラスコにそれを処理させることができますか? – Flaviu

25

あなたはuwsgiで動作するようにWERKZEUGエラーページを取得したい場合は、WERKZEUGのDebuggedApplicationミドルウェアを使用してみてください。この質問は古いですが、私は今後の参考のためにこれを投稿します...

from werkzeug.debug import DebuggedApplication 
app.wsgi_app = DebuggedApplication(app.wsgi_app, True) 

これは、トリックを行う必要がありますが、開発環境でのみこれを行うことを忘れないでください。

+4

これは私のために働いた、他の答えはしなかった。ありがとう。 –

+2

デバッガのプロンプトを機能させるには、uwsgiで1つのワーカーを使用する必要があります(--workers 1、--threads 4) – GaretJax

関連する問題