记录一次python3 flask 多线程被执行两次的问题
前言
最近在使用 python3 flask 做管理服务,需要实现服务中 flask server 和 另一个多线程while循环同时存在,如下
from flask import Flask , jsonify, request, abort,Response,send_file,render_template,redirect,url_for,send_from_directory,make_response
from flask_bootstrap import Bootstrap
app = Flask(__name__, static_url_path='/static')
bootstrap = Bootstrap(app)
import time
import threading
def daemon_task:
while True:
print("start daemon")
time.sleep(10)
if __name__ == "__main__":
# 守护线程
thread_task = threading.Thread(target=daemon_task)
thread_task.start()
app.run(debug=True)
运行中发现,多线程 daemon_task 被启动了两次,使用单例模式或者换用 multiprocessing.Process 都没有解决
正文
参考博客:Flask 运行2次
原来是 debug=True 的原因,chatgpt 回答是:当使用 Flask 的 app.run() 启动应用程序时,如果将 debug 参数设置为 True,则应用程序将会在单独的线程中运行,并且在代码修改后会自动重新加载,这可能导致应用程序初始化多次,包括后台任务的启动。
解决方案就是 debug=False
记录一次python3 flask 多线程被执行两次的问题的更多相关文章
- ASP.NET 多线程 监控任务执行情况,并显示进度条
关于多线程的基本概念和知识在本文中不多讲,而且我懂的也不是很透,说的太多误人子弟...对于我来说,做本文提到的功能够用就行,等实现其他效果不够用的时候,再深入研究 推荐看园子里的两篇博客应该就有个基本 ...
- Java使用多线程异步执行批量更新操作
import com.google.common.collect.Lists; import org.apache.commons.collections.CollectionUtils; impor ...
- python多线程实现同时执行两个while循环
如果想同时执行两个while True循环,可以使用多线程threading来实现. 完整代码 #coding=gbk from time import sleep, ctime import thr ...
- 多线程并发执行任务,取结果归集。终极总结:Future、FutureTask、CompletionService、CompletableFuture
目录 1.Futrue 2.FutureTask 3.CompletionService 4.CompletableFuture 5.总结 ================正文分割线========= ...
- flask请求异步执行(转载)
Flask默认是不支持非阻塞IO的,表现为: 当 请求1未完成之前,请求2是需要等待处理状态,效率非常低. 在flask中非阻塞实现可以由2种: 启用flask多线程机制 # Flask from f ...
- new Random().Next(1, 100); 多线程同时执行结果很高概率相同,
/// <summary> /// new Random().Next(1, 100); 多线程同时执行结果很高概率相同, /// 是用的当前时间为seed,时间相同结果相同 /// // ...
- python3+Flask 链接MySQL 时,提示“No module named MYSQLdb”
python3+flask 链接Mysql时提示“No module named MYSQLdb” 解决: pip install mysqlclient
- C# 不使用Task实现的多线程顺序执行
多线程有很好的并发性即无序性,在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项 ...
- python:使用多线程同时执行多个函数
使用多线程同时执行多个函数 import time import os import threading def open_calc(): with open('test.txt', 'r') as ...
- 在flask服务里面执行adb 安装命令
今天讲的是我在flask服务里执行adb install 命令,被坑了一天 需求是我们的安卓打包机器和我们的自动化机器不是同一台,管理人也不一样,想让每次打包后能通知到我们的服务器,然后执行后续的操作 ...
随机推荐
- uniapp中OnShow获取缓存
点击查看代码 function getStorage(key) { return new Promise((resolve, reject) => { uni.getStorage({ key: ...
- Python语言:散修笔记
文章目录 前言 转义字符的使用 原字符 变量的定义 类型转换 注释 接收用户信息 运算规则 整除运算 幂运算 比较运算符 布尔运算 运算优先级 对象的布尔值 if else elif分支结构 条件表达 ...
- 程序编译流程与 GCC 编译器
目录 文章目录 目录 GUN 计划 GCC 编译器 Clang 和 LLVM GCC 的常用指令选项 GCC 所遵循的部分约定规则 GCC 的编译流程 GCC 的编译流程示例 编译多个文件 GUN 计 ...
- 联网安装与源码安装mysql
一.卸载mariadb的rpm包 1.首先,你需要找出已安装的MariaDB包的具体名称.可以使用以下命令列出所有已安装的MariaDB包: rpm -qa | grep mariadb 2.删除命令 ...
- 深入理解Docker原理
本文参考转载至:<深入剖析Kubernetes - 张磊> 更过优秀博文请关注:https://blog.bigcoder.cn 容器技术的核心功能,就是通过约束和修改进程的动态表现,从而 ...
- IDEA使用——快捷键修改
刚转入IDEA的小伙伴都知道,如果将IDEA的快捷键设置为Eclipse模式也会有相当多常用快捷键不一样,下面链接的配置文件是博主自己IDEA配置的导出文件.我将Eclipse常用的快捷键都做了同步, ...
- Redis内存容量评估
业务侧申请redis服务器资源时,需要事先对redis容量做一个大致评估,之前的容量评估公式基本只是简单的 (key长度 value长度)* key个数,误差较大,后期经常需要进行缩扩容调整,因此提出 ...
- 深入探讨Function Calling:实现外部函数调用的工作原理
引言 Function Calling 是一个允许大型语言模型(如 GPT)在生成文本的过程中调用外部函数或服务的功能. Function Calling允许我们以 JSON 格式向 LLM 模型描述 ...
- iOS开发环境theos开发环境搭建与介绍
iOS开发环境theos开发环境搭建与介绍 标签(空格分隔): 越狱开发-第一篇 1. 环境准备 一台Mac,本人的机器是MacBook Air (13-inch, Mid 2013),系统是10.1 ...
- 【Socket】解决TCP粘包问题
一.介绍 TCP一种面向连接的.可靠的.基于字节流的传输层协议. 三次握手: 客户端发送服务端连接请求,等待服务端的回复. 服务端收到请求,服务端回复客户端,可以建立连接,并等待. 客户端收到回复并发 ...