flask(十一)----全局错误处理+异常处理

当服务发生错误时,可以给前端返回我们想要返回的内容,这样在用户角度看起来体验就更友好。

1.对于不可预知的错误:

@app.errorhandler()

from flask import Flask, render_template

app = Flask(__name__)

@app.errorhandler(500)
def server_error(error):
    return '正在升级,请耐心等待'
    # return render_template('index.html')

# app.register_error_handler(500,server_error)

@app.route('/login')
def login():
    1/0         # 1/0 会触发服务500的错误,通过上面的errorhandler处理500错误。
    return 'login page'

if __name__ == '__main__':
    app.run(debug=True, port=6000)

2.对于可预知的错误:

        abort():抛出指定的异常。

from flask import Flask, render_template, request,abort

app = Flask(__name__)

@app.errorhandler(404)
def server_error(error):
    return '未授权'
    # return render_template('index.html')

# app.register_error_handler(404,server_error)

@app.route('/login')
def login():
    if not request.args.get('username'):
        abort(404)      # abort:如果有异常就抛出异常
    return 'login page'

if __name__ == '__main__':
    app.run(debug=True, port=6000)

3.raise自定义抛出异常

        UserError(Exception):自定义异常类时需要继承Exception类。

from flask import Flask, render_template, request

app = Flask(__name__)

class UserError(Exception): # 自定义异常需要继承Exception类
    pass

@app.errorhandler(UserError)
def server_error(error):
    return render_template('user_error.html', error=error), 401

# app.register_error_handler(404,server_error)


@app.route('/login')
def login():
    if not request.args.get('username'):
        raise UserError()      # abort:如果有异常就抛出异常
    return 'login page'

if __name__ == '__main__':
    app.run(debug=True, port=6000)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flask中实现前端实时显示后端处理进度可以通过使用WebSocket技术来实现。WebSocket是一种基于TCP的协议,可以实现双向通信,使得前后端能够在同一个连接上进行实时的数据交换。 首先,我们需要在Flask中使用WebSocket,可以使用Flask-SocketIO来方便地实现WebSocket功能。安装Flask-SocketIO后,我们可以在Flask应用中使用socketio对象来实现WebSocket的功能。 在后端代码中,我们可以通过在任务处理函数中发送进度信息给前端。例如,我们可以在任务处理函数的循环中,使用socketio的emit函数发送当前任务的进度信息。前端页面将通过监听WebSocket消息的方式接收进度信息。 在前端代码中,我们需要在页面中引入SocketIO的JavaScript库,并创建一个SocketIO对象。然后,我们可以使用socket.on()函数来监听后端发送的进度信息,并根据接收到的进度信息来更新前端页面上的进度显示。 需要注意的是,为了防止过多的WebSocket连接导致性能问题,我们可以考虑使用Flask-SocketIO提供的命名空间和房间功能。通过使用命名空间和房间,我们可以将客户端分组,只向特定的客户端发送进度信息。 总结起来,实现Flask和前端实时显示后端处理进度的关键步骤是:在Flask应用中使用Flask-SocketIO实现WebSocket功能,后端任务处理函数中使用socketio对象发送进度信息,前端页面中使用SocketIO对象监听进度信息并更新页面显示。这样就能够实现前端实时显示后端处理进度的功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chuntian_tester

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值