# Flask的一些关于线程的特性

> 发布于：2023-07-01 | 分类：笔记 | 原文：https://www.imbailey.cn/post/flask-thread-features

## 前言

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

## Flask的多线程

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

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

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

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

**取消自动重启**

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

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

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