目录

Flask的一些关于线程的特性

前言

Flask是我最喜欢用的后端,以为它实在是太简单了,拿来做小型项目速度嗖嗖的。最近做比赛需要将后端通过socket连接到硬件设备,socket是有状态的,有连接数量的限制,所以要格外注意它的状态,Flask的一些特性会改变状态,如果不注意的话会导致很多bug,我踩了很多坑,在这里总结一下。

Flask的多线程

Flask会默认开启多线程的模式,多线程有什么用呢?试想一下,你写了两个路由,第一个需要执行10s,第二个执行0.1s。那么如果A用户访问第一个路由,等待过程中,B用户访问第二个路由的请求就会被阻塞,为了0.1s而等待了10s,效率非常低。如果使用多线程并发,就不会被阻塞,提高了系统的吞吐量。

注意并发不是并行,并发是有利于解决IO问题的。当时我的socket程序出了问题,尝试在多线程这里去解决,是走了歪路。

Debug模式可能会导致代码重复执行

在 Debug 模式下,Flask 中的 Werkzeug WSGI 套件默认会启动一个额外的进程来监控文件变化,当我们修改文件时,自动帮我们重启项目

取消自动重启

在 Debug 模式下,为了方便调试,Flask 提供了当文件变化的时候自动重启实例的功能。关闭这个功能就可以避免初始化两次的情况,但同时也丧失了自动重启的功能

app.run(debug=True, use_reloader=False)

详情请见:https://blog.csdn.net/qq_36078992/article/details/109559713