Python Flask Debug 模式

本文探讨了Python Flask框架在Debug模式下自动启动两次的问题,分析了此现象背后的原因,涉及任务调度器启动、多线程模式下子线程重复启动及数据重复写入数据库等问题,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python Flask Debug 模式

自动启动两次。参见如下代码的运行结果

代码
if __name__ == '__main__':
    scheduler.start()
    print("启动任务调度器")
    runScheduler(scheduler, jobslist, jobsnum)
    # app.run(host="127.0.0.1", port=80, debug=False)
    app.run(host="127.0.0.1", port=80, debug=True)
运行结果
2020-01-14 09:58:56,035 - INFO: Scheduler started
启动任务调度器
 * Serving Flask app "hangkong.web.app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
2020-01-14 09:58:56,317 - INFO:  * Restarting with stat
ROOT_PATH:  D:\programs\Anaconda_program\hangtian_spider\hangkong
LOCAL_PATH:  D:\programs\Anaconda_program\hangtian_spider\hangkong/files/
LOG_PATH:  D:\programs\Anaconda_program\hangtian_spider\hangkong/
mysql://root:root@127.0.0.1:3306/spider?charset=utf8
启动任务调度器
2020-01-14 09:59:00,458 - INFO: Scheduler started
2020-01-14 09:59:00,583 - WARNING:  * Debugger is active!
2020-01-14 09:59:00,583 - INFO:  * Debugger PIN: 139-762-009
2020-01-14 09:59:00,598 - INFO:  * Running on http://127.0.0.1:80/ (Press CTRL+C to quit)
多线程模式

在debug模式下,若任务内有单个的子线程,也会启动俩子线程,因为flask在debug模式下重启了。在数据写入数据库的时候会重复写入。

因此,需要对读写加锁。

mdb_lock.acquire()
read_mdb_to_MySQL(root_dir, file)
mdb_lock.release()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值