通过gunicorn产生的pid文件进行管理gunicorn进程,防止多个gunicorn项目时的混乱
gunicorn配置
# gunicorn.conf.py
import logging
import logging.handlers
from logging.hand lers import WatchedFileHandler
import os
import multiprocessing
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
LOG_PATH = os.path.join(ROOT_PATH, 'log')
bind = '0.0.0.0:8111' # 绑定ip和端口号
chdir = ROOT_PATH
timeout = 60 # 超时
worker_class = 'gevent' # 使用gevent模式,还可以使用sync 模式,默认的是sync模式
daemon = True # 是否后台运行
debug = False
workers = multiprocessing.cpu_count() * 2 + 1 # 进程数
threads = 2 # 指定每个进程开启的线程数
loglevel = 'info' # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
pidfile = os.path.join(ROOT_PATH, "gunicorn.pid") # 存放Gunicorn进程pid的位置,便于跟踪
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' # 设置gunicorn访问日志格式,错误日志无法设置
accesslog = os.path.join(LOG_PATH, "gunicorn_access.log") # 访问日志文件
errorlog = os.path.join(LOG_PATH, "gunicorn_error.log") # 错误日志文件
启动脚本
#!/bin/sh
# 启动后创建gunicorn.pid文件
cd /path/to/project
gunicorn crawl_api:app -c gunicorn.conf.py
关闭脚本
#!/bin/sh
# gunicorn 关闭后不会自动删掉pid文件,这里自行删掉
cd /path/to/project
for id in `cat gunicorn.pid`;do
kill -9 $id
done
rm -f gunicorn.pid
重启脚本
#!/bin/sh
cd /path/to/project
for id in `cat gunicorn.pid`;do
kill -HUP $id
done








网友评论