我有一个Flask应用程序,它使用蓝图来组织不同的模块。我在www.example.com中定义了一个错误处理程序errors.py来处理500个错误,以呈现自定义的500个页面。
@main.app_errorhandler(500)
def internal_server_error(e):
print 'yes'
return render_template('500.html'), 500
当我使用Flask内置服务器运行我的应用程序时,这个错误处理程序工作正常,我可以看到500.html
页面。但是当我用gunicorn运行我的应用程序时,这个错误处理程序不起作用,我看不到500.html
页面,我只看到一个默认的Internal Server Error
消息。
我尝试了以下方法,但都没有效果:在我的应用程序中设置PROPAGATE_EXCEPTIONS=True
,让Flask重新引发异常,而不是让gunicorn处理它们。在我的应用程序中设置DEBUG=True
,让Flask显示错误消息,而不是让gunicorn处理它们。使用app.config['PROPAGATE_EXCEPTIONS']=True
时,我使用的是gunicorn版本20.1.0,我使用以下命令运行gunicorn:
gunicorn -w 5 -t 60 -b 0.0.0.0:5000 manage:app
有人知道为什么我的错误处理程序不能在gunicorn中工作吗?我该如何解决这个问题?谢谢你!
1条答案
按热度按时间nhjlsmyf1#
我在这里看到两个问题:
1.看起来
print
缺少括号,这将导致语法错误1.你似乎使用了一个不必要的变量。尝试将
@main.app_errorhandler(500)
更改为@main.app.errorhandler(500)
。通过这些更改,带有此错误处理程序的最小flask应用程序看起来像这样:
上面的代码显示“It works!“访问索引页时。