if __name__ == '__main__':
app.run(debug=app.config['DEBUG'])
一般的解释是:如果是文件是作为模块导入的,则不执行if__name__以下的内容。
那么,在flask中增加这个判断,再启动web服务器,到底有什么具体的意义呢?
在开发环境下所启动的服务器是flask自带的一个简单的服务器
当把项目部署到生产环境时,通常不会使用flask自带的服务器
在生产环境中,常使用nginx+uwsgi来部署项目
nginx作为前置服务器,用来接收浏览器发来的请求,再把这个请求转发给uwsgi
在生产环境中是由uwsgi加载项目文件启动,项目文件如app.py不再是入口文件,它只是由uwsgi加载的模块文件
在生产环境中app.run()是不会执行的
如果没有了if__name__这个判断
在生产环境中一旦加载了app.py,app.run()就会执行,
而已经有了uwsgi作为web服务器,再启动flask内置的服务器是不可以的

本文详细解释了在Flask应用中使用if __name__ == '__main__':判断的作用。在开发环境中,此判断确保了只有直接运行app.py时才会启动Flask内置服务器。但在生产环境中,项目通常通过uwsgi和nginx部署,此时app.py仅作为模块被加载,因此if __name__ == '__main__':避免了不必要的Flask服务器启动,防止与uwsgi冲突。
681

被折叠的 条评论
为什么被折叠?



