flask部署在apache上,每一个请求过来的时候,是重新执行app.py的文件吗?
怎样才能像直接运行flask文件一样,让它能在指定的地址和端口监听,而不用重新运行app.py
flask部署在apache上,每一个请求过来的时候,是重新执行app.py的文件吗?
怎样才能像直接运行flask文件一样,让它能在指定的地址和端口监听,而不用重新运行app.py
你要一直运行,考虑这样:flask跑起来监听一个端口,比如3000,apache/nginx配置反向代理,把80端口代理到3000上。
参考配置:
<VirtualHost *:80>
ServerName abc.com
ProxyPass "/" "http://localhost:3000/"
ProxyPassReverse "/" "http://localhost:3000/"
</VirtualHost>
flask启动文件只会执行一次,不可能来个请求就创建一个app核心对象吧,所以用生产服务器启动以后由主线程来执行启动文件,之后进来的请求都是由flask创建的子线程去完成的。
在下没有用过apache,但是代码里只要有
if __name__ == '__main__':
通过生产服务器启动的话,这里的app.run()就不会执行
一点自己的想法,希望对养猪哥有所帮助
2 回答4.3k 阅读✓ 已解决
2 回答867 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答868 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
4 回答2.6k 阅读
3 回答912 阅读✓ 已解决
apache的部署方式,我没有使用过。我一般是是用nginx+uwsgi来部署flask的。
uwsgi --uid os373 --gid os373 --ini /var/www/pybolg/pyblog_uwsgi.ini
上面的代码是使用uwsgi来部署我的flask程序的。执行成功之后的log日志是这样的。
所以,我个人认为,你用uwsgi执行了flask项目之后,项目的相关内容已经加载到了内存。所以,不会每次url请求都重新执行app.py。但是,但是.....
每个网页浏览器要浏览url的时候,都要重新执行一下 view 视图函数里的内容。