Gunicorn简单学习

本文详细介绍了Gunicorn和uWSGI这两种PythonWSGI服务器的特点。Gunicorn以其简单易用、轻量级资源消耗及高性能著称,适用于网络IO密集型服务;uWSGI则以C语言实现,虽性能更优,但在使用灵活性上稍逊一筹。文章还提供了Gunicorn的安装和配置指南。

什么是Gunicorn

  • Gunicorn是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork worker模式,具有使用非常简单,轻量级的资源消耗,以及高性能等特点。

为什么使用Gunicorn,而不使用uWSGI

  • Gunicorn是使用Python实现的WSGI服务器, 直接提供了http服务, 并且在woker上提供了多种选择, gevent, eventlet这些都支持, 在多worker最大化里用CPU的同时, 还可以使用协程来提供并发支撑, 对于网络IO密集的服务比较有利。
  • 不同于Gunicorn, uWSGI是使用C写的, 它的socket fd创建, worker进程的启动都是使用C语言系统接口来实现的, 在worker进程处理循环中, 解析了http请求后, 使用python的C接口生成environ对象, 再把这个对象作为参数塞到暴露出来的WSGI application函数中调用. 而这一切都是在C程序中进行, 只是在处理请求的时候交给python虚拟机调用application. 完全使用C语言实现的好处是性能会好一些

Gunicorn运行与配置

$ sudo apt-get update
$ sudo apt-get install gunicorn
$ gunicorn [OPTIONS] 模块名:变量名
eg:gunicorn --bind unix:/tmp/morso.space.socket  blogproject.wsgi:application
//模块名是python文件名,可以是完整的路径+python文件名;变量名是python文件中可调用的WSGI(Web Server Gateway )
  • 常用配置参数
  1. 指定一个配置文件(py文件)
    -c CONFIG, --config=CONFIG
  2. 与指定socket进行绑定
    -b BIND, --bind=BIND
  3. 以守护进程形式来运行Gunicorn进程,其实就是将这个服务放到后台去运行。
    -D, --daemon
  4. 工作进程的数量。上边提到gunicorn是一个pre-fork worker模式,就是指gunicorn启动的时候,在主进程中会预先fork出指定数量的worker进程在处理请求时,gunicorn依靠操作系统来提供负载均衡,通常推荐的worker数量是:(2 x $num_cores) + 1
    -w WORKERS, --workers=WORKERS
  5. 工作进程类型. 包括 sync(默认), eventlet, gevent, or tornado, gthread, gaiohttp
    -k WORKERCLASS, --worker-class=WORKERCLASS
  6. 确认要写入Error log的文件FILE. ‘-’ 表示输出到标准错误输出
    --access-logfile FILE
  7. 确认要写入Access log的文件FILE. ‘-’ 表示输出到标准输出.
    --error-logfile FILE, --log-file FILE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值