django自身是带运行服务的方式的,但是那只是用于开发调试使用的.
部署到生产环境一般都使用gunicorn或者uwsgi来完成.
我一般运行django项目都是通过gunicorn搭配gevent.
pip install gunicorn
pip install gevent
pip install setproctitle
pip freeze > requirements.txt
requirements.txt
gunicorn.py
gunicorn.py:
创建此文件用来保存gunicorn启动的配置参数.
import os
import multiprocessing
# 设置gunicorn进程名称,ps和top时可以查看
# 需要安装: pip install setproctitle
proc_name = 'rurality'
default_proc_name = 'rurality'
CUR_DIR = os.path.dirname(__file__)
# 开启几个进程
workers = multiprocessing.cpu_count() * 2
# 每个进程开启几个线程
threads = multiprocessing.cpu_count() * 2
# 每个worker最大处理请求数量, 超过就重启此worker
max_requests = 1000
# 随机增加偏移量range(1, max_requests_jitter),与max_requests配合,防止多个worker同时重启
max_requests_jitter = 100
bind = "0.0.0.0:18785"
chdir = CUR_DIR
preload = True
worker_class = 'gevent'
workers根据CPU数量来设置.
通过proc_name和default_proc_name来设置进程名称(pip install > setproctitle就是干这个用的),方便查看.
运行服务:
gunicorn -c gunicorn.py rurality.wsgi:application