WSGI协议

Posted zhuyafeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSGI协议相关的知识,希望对你有一定的参考价值。

WSGI,它规定了一种在Web服务器和Web应用程序/框架之间推荐的标准接口,以确保Web应用程序在不同的Web服务器之间具有可移植性。

WSGi是一个同步接口,所有Tornado的WSGI容器是无法实现异步的。主流的选择是uWSGI和Gunicorn。Gunicorn易于配置,兼容性好,CPU消耗很少,在豆瓣使用广泛。

其中Gunicorn 常规启动命令(配置文件)

Gunicorn --workers=3 chapter6.section1.app:app -b 0.0.0.0:9000

chapter6.section1是模块的名字,第一个app是模块文件的名字,第二个app是文件中Flask实例的名字,Work的数量并不是越多越好。

而uWSGI的启动命令:它自带丰富的组件,其中包括核心组件包括进程管理,监控,IPC等功能,实现应用服务器接口的请求插件支持多种语言和平台,比如WSGI,Rack,Lua WSAPI,网关组件实现了负载均衡,代理和路由功能。

uwsgi --http 0.0.0.0:9000 --wsgi-file chapter6/section1/app.py --callable app --processes 4 --threads 2 --stats 0.0.0.0:5000

上面的命令表示启动了4个进程,每个进程使用2个线程,而且开启了5000Web接口,返回监控uWSGI的信息

注意:

  --http-socket和--http 其实是完全不同的两个选项。如果想直接裸跑uWSGI,应该使用--http,它产生一个额外的进程将请求转发给Workers,

如果希望它被反向代理(比如和nginx一起用),应该使用--http-socket。  

 

以上是关于WSGI协议的主要内容,如果未能解决你的问题,请参考以下文章

wsgi 协议

浅析WSGI协议

Python Web开发 - WSGI & uWSGI协议

WSGI协议

Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议

Python Web开发中,WSGI协议的作用和实现原理详解