gunicorn
- 安装
-
pip install gunicorn
-
- 启动
- 命令
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

浙公网安备 33010602011771号