flask:异常后停止服务器

时间:2018-11-15 20:16:38

标签: python flask

我想在发生未处理的异常时立即停止我的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,但这仅是在路由失败后向客户端提供自定义错误消息。

1 个答案:

答案 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位是您在异常处理程序中所需要的。