虽然Flask可以作为HTTP Web服务器,但它在安全性、可扩展性和效率方面未经过优化。uWSGI则是作为全功能Web服务器开发的,解决了Flask未涉及的许多问题:
Nginx是高性能、高可扩展性、高可用性的Web服务器,充当负载均衡器、反向代理和缓存机制。它能:
在本例中,我们将Nginx作为uWSGI前面的反向代理使用,具有以下优势:
在之前的Flask应用基础上,只需少量配置即可使用uWSGI:
安装uWSGI:
pip install uwsgi启动uWSGI实例:
uwsgi --http 0.0.0.0:8080 --wsgi-file service.py --callable app此命令告诉uWSGI在0.0.0.0:8080运行服务器,使用service.py文件中的应用程序,并通过WSGI规范调用可调用对象。
创建配置文件app.ini:
[uwsgi]
http = 0.0.0.0:8080
module = app.service
callable = app
die-on-term = true
chdir = /home/aisummer/src/soft_eng_for_dl/
virtualenv = /home/aisummer/miniconda3/envs/Deep-Learning-Production-Course/
processes = 1
master = false
vacuum = true执行服务器:
uwsgi app.inisudo apt-get install nginx在/etc/nginx/sites-available/目录创建service.conf:
server {
listen 80;
server_name 0.0.0.0;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/aisummer/src/soft_eng_for_dl/app/service.sock;
}
}在uWSGI配置文件中添加:
socket = service.sock
chmod-socket = 660sudo ln -s /etc/nginx/sites-available/service /etc/nginx/sites-enabled
sudo nginx -t我们使用uWSGI从Flask应用程序创建服务器,并将其隐藏在Nginx反向代理后面,以处理安全和负载平衡等问题。最终我们获得了可以轻松扩展到数百万用户的深度学习应用程序,并且可以按原样部署到云端立即使用。
由于我们进行的所有步骤和优化,可以确信应用程序的性能,无需过多担心延迟、效率和安全问题。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。