gunicorn

  1. 安装
    •   
      pip install gunicorn

       

  2. 启动
    •  命令 
      gunicorn -w 3 -b 127.0.0.1:8080 project.wsgi:application

       

    • 配置文件
      import logging
      import logging.handlers
      from logging.handlers import WatchedFileHandler
      import os
      import multiprocessing
       
      bind = "127.0.0.1:8000"   #绑定的ip与端口
      backlog = 512                #监听队列数量,64-2048
      worker_class = 'sync' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
      workers = 4 # multiprocessing.cpu_count()    #进程数
      threads = 16 #multiprocessing.cpu_count()*4 #指定每个进程开启的线程数
      loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
      access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
       
      accesslog = "-"  #访问日志文件,"-" 表示标准输出
      errorlog = "-"   #错误日志文件,"-" 表示标准输出
       
      proc_name = 'eashop'   #进程名
      /root/python/bin/gunicorn  -c gunicorn.conf.py EA_Shop.wsgi:application

       

使用gunicorn加载静态文件

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 
urlpatterns = [
    url('^admin/', admin.site.urls),
]
urlpatterns += staticfiles_urlpatterns()



#setting
DEBUG = True
STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

 

gunicorn 支持如下4种工作模式

  • Sync Workers
  • Async Workers
  • Tornado Workers
  • AsyncIO workers

工作模式是通过work_class参数配置的值:缺省值: sync

  • sync
  • gevent
  • eventlet
  • tornado
  • gaiohttp
  • gthread

Sync Workers (sync)

最简单的同步工作模式

Async Workers (gevent, eventlet)

gevent和eventlet都是基于Greenlet库,利用python协程实现的

Tornado Workers (tornado)

利用python Tornado框架实现

AsyncIO Workers (gthread, gaiohttp)

gaiohttp利用aiohttp库实现异步I/O,支持web socket

gthread采用的是线程工作模式,利用线程池管理连接

 

gunicorn 默认使用同步阻塞的网络模型(-k sync),对于大并发的访问可能表现不够好, 它还支持其它更好的模式,比如:gevent或meinheld。

#  gevent

gunicorn -k gevent code:application

#  meinheld

gunicorn -k egg:meinheld#gunicorn_worker code:application

 

posted @ 2021-02-03 12:15  CeasonCing  阅读(203)  评论(0)    收藏  举报