这一步的的测试可以看 一个小型的资源管理站
这里与直接上结果。
原flask使用的WSGI是python,但是很明显python作为>当你在Ubuntu下使用nginx和uwsgi部署flask时,uwsgi服务器的默认配置可能会导致问题。uwsgi默认会创建一个主进程和一个或多个工作进程,而当nginx代理请求时,它可能会将请求发送到已经关闭的工作进程,导致超时错误。使用killall -s INT uwsgi命令杀掉uwsgi进程可以解决这个问题,因为这个命令会向uwsgi主进程发送SIGINT信号,通知它关闭所有工作进程。然后,当你再次启动uwsgi时,它会重新创建一组新的工作进程,这些工作进程应该都能够正常工作。
为了避免这种情况,你可以修改uwsgi的配置,使它只创建一个工作进程。这样,当nginx代理请求时,它就只会将请求发送到一个工作进程,而不会出现超时错误。你可以在uwsgi配置文件中添加processes = 1来实现这一目的。例如:
==============
[uwsgi]
socket = /tmp/uwsgisock
chdir = /path/to/your/app
wsgi-file = apppy
callable = app
processes = 1
==============
希望这些信息能够帮助你解决问题。我们先写一个最基本的flask应用:
demopy
from flask import Flask
app = Flask(name)
@approute('\')
def index():
return 'Hello World'
if __name__ == __main__:
apprun()
运行这个py文件,打开浏览器访问127001:5000就能看到显示Hello World的页面
如果让这个flask引用监听来自公网ip的请求,理论上你跑此程序的机器就相当于一个服务器了,然而这个服务器并不完美,所以我们需要nginx和gunicorn来增加它的功能,让它真刀真q上生产环境的时候能按要求运行。
flask自带的WSGI框架性能很差劲,只能适用于开发环境调试使用。我们用专业一点的gunicorn(还有很多其他优秀的框架)替代flask自带的WSGI框架。
配置完后,通过命令’/usr/local/bin/gunicorn -b127001:5000‘启动应用。打开浏览器访问127001:5000,同样能够得到返回页面
然而gunicorn也仅仅是一个python的WSGI框架而已,要让它真正处理来自互联网的各类访问功能还是有点欠缺,这时候就需要用到大名鼎鼎的nginx 服务器来替gunicorn遮风挡雨了。
Ubuntu下安装nginx可以用命令
sudo apt-get install nginx
安装后需要进行下配置:
cd /etc/nginx/sites-available
sudo vi test (test为配置名称,可以根据自己项目进行命名)
test文件的配置为:
server {
listen 80; # 监听80端口
location / {
proxy_pass >一像flask和Django内部是有实现socket,但是,单独这样一个socket性能是有问题的。
所以,要用到WSGI服务器
很多框架都自带了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等。当然性能都不好,自带的 web server 更多的是测试用途,发布时则使用生产环境的 WSGI server或者是联合 nginx 做 uwsgi 。
详解: >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)