python尝试除了不捕获所有错误

时间:2012-03-31 01:55:23

标签: python exception flask beaker openshift

在我的烧瓶网页应用程序中,我使用烧杯库进行会话处理。在下面的代码中,由于某些未知原因,生产服务器引发了异常,但我的本地电脑确实没问题。

import sys

...

try:
    beaker_session = request.environ['beaker.session']
    beaker_session['user_id'] = user.id 
    beaker_session.save()
except:
    flash(sys.exc_info()[0])
    return render_template('main/login.html')

本地计算机按预期方式保存会话,没有任何异常。 生产服务器(RedHat OpenShift)在“beaker_session.save()”行上完全引发错误。但是,不是显示带有Flash消息的登录页面,而是抛出内部服务器错误500。我检查了烧杯后端url(mysql db)并且没有问题,因为它适用于代码的其他部分,我坚持新注册的用户。 所以,我的问题是1)为什么除了部分不起作用? 2)为什么烧杯无法保存会话。 谢谢。

2 个答案:

答案 0 :(得分:0)

我不熟悉烧杯库,但是如果它是一个SWIG包装的库,并且C ++代码中存在异常,那么设计者可能忽略了将异常映射到适当的python异常。如果是这种情况,那么Python就不会对异常有所了解 - 甚至尝试/ except都会错过它。

答案 1 :(得分:0)

默认情况下,Flask吞下异常,请务必将此行添加到靠近顶部的应用程序中:

app.config ['PROPAGATE_EXCEPTIONS'] = True