私はFlaskでしばらくの間このメソッドに頭を打ち続けてきましたが、今は進歩を遂げているように見えますが、やみくもに私を困惑させるようなことが起こりました。私が呼び出しているメソッドは次のとおりです。
@app.route('/facedata/<slug>', methods=["POST"])
def facedata(slug):
if request.method == "POST":
try:
post = Post.objects.get_or_404(slug=slug)
data = [float(item) for item in request.form.getlist('emotions[]')]
post.face_data.append(data)
post.save()
except:
traceback.print_exc(file=sys.stdout)
長い間、私はここでエラーを取得していましたが、そのエラーはherokuログに記録されます。現在、エラーはありません。それは、exceptループに到達しないことを意味しますが、さらに悪いことに、まだ500エラーがあります。具体的に私が得る500エラーは次のとおりです。
heroku[router]: at=info method=POST path=/facedata/StripedVuitton Host=cryptic-mountain-6390.herokuapp.com fwd="18.111.90.180" dyno=web.2 connect=4ms service=39ms status=500 bytes=291
私はこれらのPOST
リクエストをAJAXこのメソッドで送信しています:
var slug = document.getElementById("hidden-slug").getAttribute("value");
data = {emotions: lRes};
$.ajax({
type: "POST",
data: data,
url: document.location.Origin + "/facedata/" + slug,
success: function(){
console.log("Success!");
}
});
正直なところ、この問題のデバッグを継続する方法がわかりません。例外なくトレースバックを取得することはあまり意味がありませんが、たぶん私は単純です。
必要に応じて、HerokuのMongoHQの上でmongoengineを使用しています。
これにもう少し頭を痛めた後、pocoo googleグループの素晴らしい人たちのおかげでようやく理解できました(フラスコには別のリストがあることを知りました)。まず、アプリの構成でPROPAGATE_EXCEPTIONS
オプションをオンにする必要がありました( http://flask.pocoo.org/docs/config/#builtin-configuration-values )。
それが終わった後、ビュー関数から応答を返さないという問題があることに気付きました。Flaskはこのメソッドを解釈しました。
return jsonify(result={"status": 200})
try
ブロックの終わりまで。これが将来同様の状況にある人を助けることを願っています。
私は同じ問題を抱えていましたが、根本的な原因はスレーターの応答のものとは異なっていました:
スタックトレースのロガーをミュートしていました。 flask.app
ロガーを除外していないことを確認してください。これは、例外スタックトレースが移動する場所です(これは、app.api
という名前のflaskサーバーの情報ログとは異なることに注意してください)。