我想在发生未处理的异常时立即停止我的Flask服务器。 这是一个示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
1/0 # argh, exception
return 'Hello World!'
if __name__ == '__main__':
app.run(port=12345)
如果运行此命令并转到localhost:12345,则浏览器会告诉您“内部服务器错误”,而python控制台会记录DivisionByZero
异常。
但是服务器应用程序不会崩溃。 Flask将您的路由包装到自己的错误处理中,并且只打印异常。
我想使服务器在路由产生异常后立即停止。但是我没有在API中发现此行为。您可以指定errorhandler,但这仅是在路由失败后向客户端提供自定义错误消息。
答案 0 :(得分:0)
停止烧瓶需要进入Werkzeug内部。参见http://flask.pocoo.org/snippets/67/
从单用户应用程序中提取:
from flask import request
@app.route('/quit')
def shutdown():
...
shutdown_hook = request.environ.get('werkzeug.server.shutdown')
if shutdown_hook is not None:
shutdown_hook()
return Response("Bye", mimetype='text/plain')
shutdown_hook
位是您在异常处理程序中所需要的。