gunicorn配置文件

工作中使用gunicorn作为服务器的时候,通过配置文件来启动的,gunicorn启动参数可以从--help中获取,但是配置文件中,没有,下面是一些常见的选项的配置和说明

import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
bind = '0.0.0.0:9010'       #绑定的ip已经端口号
backlog = 512                #监听队列
chdir = '/home/test/server/bin'   #gunicorn要切换到的目的工作目录
timeout = 30      #超时
worker_class = 'gevent' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = 16    #进程数

threads = 2 #指定每个进程开启的线程数

loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'     #设置gunicorn访问日志格式,错误日志无法设置

其每个选项的含义如下

"""

  h           remote address
        l           '-'
        u           currently '-', may be user name in future releases
        t           date of the request
        r           status line (e.g. ``GET / HTTP/1.1``)
        s           status
        b           response length or '-'
        f           referer
        a           user agent
        T           request time in seconds
        D           request time in microseconds
        L           request time in decimal seconds
        p           process ID
        {Header}i   request header
        {Header}o   response header

"""
accesslog = "/dev/null"    #访问日志文件的路径
errorlog = "/dev/null"        #错误日志文件的路径

公司的server日志都是按天分割的,多进程中TimeRotatingFileHandler分割日志还是会出问题的,于是便使用了

WatchedFileHandler来记录日志,在server机器上,凌晨加一个自动任务,这样日志就能切割了,但是gunicorn

的logging默认使用的是FileHandler,但是一旦当自动任务备份的时候,它不会自动重新创建,于是便把原有的FileHandler流重定向到了/dev/null,自己再另外添加我想要的Handler即可,如下:

"""
acclog = logging.getLogger('gunicorn.access')
acclog.addHandler(WatchedFileHandler('/home/test/server/log/gunicorn_access.log'))
acclog.propagate = False
errlog = logging.getLogger('gunicorn.error')
errlog.addHandler(WatchedFileHandler('/home/test/server/log/gunicorn_error.log'))
errlog.propagate = False

"""

公司gunicorn 与nginx配合使用,nginx只需要设置一个反向代理

proxy_pass http://127.0.0.1:9010 ;即可

"""

你可能感兴趣的:(python)