我一直在用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
块的结尾。我希望这对将来遇到类似情况的人有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句