flask组件,你必需要了解的坑

本篇文章是我使用flask组件进行开发时遇到的诸多问题总结。在使用flask开发技术选择的时候可以参考一下。


1、flask不支持并发,如果想要在服务器上部署,那就要学习部署服务器的知识和uwsgi。

不过多解释,看源码就知道。


2、强烈推荐大家不要使用flask-login,因为真的很垃圾。太容易出bug了。

flask-login并不简单,里面的机制很复杂,使用原生flask自带的session组件,完全可以替代它,毕竟作为开源组件,flask-login还是有可能存在大bug的。


3、无论什么时候,我都强烈推荐你使用flask-sqlalchemy而不是sqlalchemy。

这两个库都用过,本质上flask-sqlalchemy是flask风格的sqlalchemy,非常好用。


4、登录判断的选择,要考虑使用session-cookie还是token。

这个自己灵活选择吧。


5、异常处理,强烈建议使用官方给出的层级异常处理。并且flask封装了很多异常处理的东西,建议根据官方文档食用。


6、如果你使用了flask-restful,那么restful会自动捕获所有的视图函数发生的所有异常,所以所有的针对app的自定义异常处理函数会失效。简单说,就是要这样写:

class MyApi(Api):
    """
    自定义Api类
    """
    def handle_error(self, e):
        # deal with the HTTPException
        if isinstance(e, HTTPException):
            return jsonify({
    
    
                'message': getattr(e, 'description', HTTP_STATUS_CODES.get(e.code, 'Unknown Error')),
                'code': e.code
            }), e.code
        # deal with the python core exception
        # we don't need to use "try" to catch the exception
        if not getattr(e, 'message', None):
            current_app.logger.error(e)
            return jsonify({
    
    
                'message': 'Server has encountered some errors.',
                'code': 500
            }), 500
        # deal with the specific custom exceptions
        return jsonify(**e.kwargs), e.status_code

7、考虑flask-apscheduler时,要首先知道这个库的文档非常垃圾,并且要明白,里面的JOB字段是不能改变的,也就是说,存到数据库的JOB,里面的字段不能自定义,除非修改源码。

真的是个SB库。


8、使用flask开发的时候要一定要注意目录结构,否则非常麻烦,官方文档给出了目录的最佳实践。可以去参考一下。

猜你喜欢

转载自blog.csdn.net/m0_51156601/article/details/127159629