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()