在我的 flask web 应用程序中,我使用 beaker 库来处理 session 。在下面的代码中,由于某些未知原因,生产服务器引发了异常,但我的本地电脑运行良好。
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')
本地计算机按预期保存 session ,没有任何异常。 生产服务器 (RedHat OpenShift) 恰好在“beaker_session.save()”行上引发错误。但是,我的登录页面没有显示闪现消息,而是抛出了内部服务器错误 500。我检查了 beaker 后端 url (mysql db),没有问题,因为它在代码的其他部分工作,我在其中保留新注册的用户。 所以,我的问题是 1) 为什么 except 部分不起作用? 2) 为什么烧杯不能保存 session 。 谢谢。
请您参考如下方法:
我不熟悉 beaker 库,但如果它是一个 SWIG 包装库,并且异常发生在 C++ 代码中,则设计者可能忽略了将异常映射到适当的 python 异常。如果是这种情况,那么 Python 将无法处理异常——甚至 try/except 也会错过它。
