部署Django博客全记录之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

猜你喜欢

转载自blog.csdn.net/weixin_43829633/article/details/85222117