Flask 启动线程bug
代码
if __name__ == '__main__':
t = threading.Thread(target=main_control, args=()) # t为新创建的线程
t.start()
app.run(debug=True, host="0.0.0.0", port=7777)
分析
Flask以debug模式启动时,默认会产生一个新的进程用以帮助代码进行热更新,也就是当你的代码出现更新时不需要重启服务器就可以继续进行调试。
我在自己启动的一个线程里进行一些和其他主机的TCP通信,实际上由于启动的是两个进程会产生两个TCP套接字,导致了一些难以捕捉的bug。
Flask提供一个参数能够关闭热更新,也就不需要启动两个web服务器进程了,有兴趣的可以去百度,也直接将debug模式关闭。