flask:异常后停止服务器 - python

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

参考方案

停止Flask需要进入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位是您在异常处理程序中所需的位。

Flask-RESTful-返回自定义响应格式 - python

我已经按照以下Flask-RESTful文档定义了自定义响应格式。app = Flask(__name__) api = restful.Api(app) @api.representation('application/octet-stream') def binary(data, code, headers=None): resp =…

WTForms Flask(wtf_flask)验证程序如何为RadioField包括“必需”属性 - python

我基本上在寻找的是WTForms的InputRequired()的RadioField等效验证器。我的意思是,当您尝试提交表单而不在具有InputRequired()验证器的StringField字段中输入任何文本时,用户会在文本字段上方看到提示,提示是"Please fill out this field"。我希望用户必须选择male或…

带后台线程的烧瓶应用程序 - python

我正在创建一个flask应用程序,对于一个请求,我需要运行一些长时间运行的作业,而无需在UI上等待。我将创建一个线程并将消息发送到UI。该线程将计算并更新数据库。但是,UI在提交后会看到一条消息。下面是我的实现,但是它正在运行线程,然后将输出发送到我不喜欢的UI。如何在后台运行此线程?@app.route('/someJob') def …

Flask-uploadnotallowed错误-重命名要保存的文件时 - python

我正在尝试在flask中上传一个excel文件,并在保存时给它一个新名称,例如:oldname.xlsx到newname.xlsx。到目前为止,这是我的代码:from flask import Flask, render_template, send_file, request, redirect, url_for from flask_uploads im…

如何在Flask中生成临时下载? - python

我有一个Flask应用,可让用户下载MP3文件。如何使下载的URL仅在特定时间段内有效?例如,我不想让任何人简单地转到example.com/static/sound.mp3并访问文件,而是希望验证每个请求以防止不必要的带宽。我正在使用Apache服务器,但是如果更容易实现,我可能会考虑切换到另一个服务器。另外,我不想使用Flask来提供文件,因为这会通过迫…