深圳男生快快乐乐

python 学习中

实际环境使用的wsgi服务器

因为每个web框架都不是专注于实现服务器方面的,因此,在生产环境部署的时候使用的服务器也不会简单的使用web框架自带的服务器,这里,我们来讨论一下用于生产环境的服务器有哪些?

1.gunicorn

Gunicorn(从Ruby下面的Unicorn得到的启发)应运而生:依赖Nginx的代理行为,同Nginx进行功能上的分离。由于不需要直接处理用户来的请求(都被Nginx先处理),Gunicorn不需要完成相关的功能,其内部逻辑非常简单:接受从Nginx来的动态请求,处理完之后返回给Nginx,由后者返回给用户。

由于功能定位很明确,Gunicorn得以用纯Python开发:大大缩短了开发时间的同时,性能上也不会很掉链子。同时,它也可以配合Nginx的代理之外的别的Proxy模块工作,其配置也相应比较简单。

配置上的简单,大概是它流行的最大的原因。

2.uwsgi

因为使用C语言开发,会和底层接触的更好,配置也是比较方便,目前和gunicorn两个算是部署时的唯二之选。
以下是通常的配置文件

[uwsgi]
http = $(HOSTNAME):9033
http-keepalive = 1
pythonpath = ../
module = service
master = 1
processes = 8
daemonize = logs/uwsgi.log
disable-logging = 1
buffer-size = 16384
harakiri = 5
pidfile = uwsgi.pid
stats = $(HOSTNAME):1733


运行:uwsgi --ini   conf.ini

3.bjoern

Python WSGI界最牛逼性能的Server其中一个是bjoern,纯C,小于1000行代码,就是看不惯uWSGI的冗余自写的。

 

WSGI服务器比较

综合广大Python开发者的实际经历,我们可以得出,使用最广的当属uWSGI以及gunicorn,我们这里来比较比较两者与其他服务器的区别。
1.gunicorn本身是个多进程管理器,需要指定相关的不同类型的worker去工作,使用gevent作为worker时单机大概是3000RPS Hello World,胜过torando自带的服务器大概是2000左右,uWSGI则会更高一点。
2.相比于tornado对于现有代码需要大规模重构才能用上高级特性,Gevent只需要一个monkey,容易对代码进行快速加工。
3.gunicorn 可以做 pre hook and post hook.

下面来对比以下uWSGI和gunicorn的速度差比

 

 

可以看到,如果单纯追求性能,那uWSGI会更好一点,而gunicorn则会更易安装和结合gevent。

结合这篇文章,我们也可以得出相同结论,在阻塞响应较多的情况下,gunicorn的gevent模式无疑性能会更加强大。

功能实现方面,无疑uWSGI会更多一些,配置也会更加复杂一些,可以看看uWSGI的配置和gunicorn的配置

至于怎么去选择,就看大家的项目结构怎么样了。最后,宣传一下我们的开源组织,PSC开源组,希望以开源项目的方式让每个人都能更有融入性的去学习,公开化你的学习。
github地址:https://github.com/PythonScie...
官方论坛:http://www.pythonscientists.com

 

 

posted on 2024-03-04 21:52  深圳男生快快乐乐  阅读(49)  评论(0编辑  收藏  举报

导航