Django uwsgi.ini配置详情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#uwsgi.ini[uwsgi]
# 使用nginx连接时使用
socket=0.0.0.0:8000
# 直接做web服务器使用
# http=0.0.0.0:8000
# 项目目录, 与manager.py同级
chdir = /home/计算机名/项目名
# 项目中wsgi.py文件的目录,相当于项目目录
wsgi-file=项目名/wsgi.py
 
# 主进程,启动一个master进程,来管理其余其他的子进程
master=True
# 设置工作进程的数量
processes=4
# 设置每个工作进程的线程数
threads=2
 
# python虚拟环境目录绝对路径。如果有的话,home是虚拟环境的根目录,pythonhome是虚拟环境下的bin目录(放置了python执行文件)
# home = /env
# PYTHOMHOME = /env/bin
 
# pid文件,用于脚本启动,停止
pidfile=uwsgi.pid
 
# 设置后台运行保存日志。只要配置了daemonize将会让uwsgi后台运行,同时将日志输出到指定目录
daemonize=uwsgi.log
 
# 服务停止时自动移除unix Socket和pid文件
vacuum = true
 
# 设置每个工程进程处理请求的上线,达到上限时,将回收(重启)进程,可以预防内存泄露
max-requests=5000
 
# 静态文件映射
static-map = /static=Django下static目录的绝对路径
 
# 指定日志文件的权限
logfile-chome=644
 
# uWSGI服务器运行时的用户ID
uid=xxx
# uWSGI服务器运行时的用户组ID
gid=xxx
# 指定工作进程名称的前缀
procname-prefix-spaced=xxx
 
# uWSGI加载的木块中哪个变量将被调用
callable=xxx
 
# 监控项目的py文件的mtime来触发重载(只在开发时使用),py-autoreload表示多长时间检测一次,单位秒
py-autoreload=1
 
# 在每个worker而不是master中加载应用。默认为false,表示先加载应用,再fork出worker,这样做可以让worker尽量共用内存,只有当写时才copy,由于先加载再fork,但有些东西是不支持fork的,比如socket连接,所以lazy-apps=false时,不要在加载应用时自动创建数据库连接等
lazy-apps=true
 
# 设置用于uwsgi包解析的内部缓存区大小为64k。默认为4k
buffer-size=32768
 
# 设置最大日志文件大小
log-maxsize=5000000
 
# 禁用请求日志记录
disable-logging=true
 
# 设置socket的监听队列大小(默认为:100)
listem=120
 
# 这个参数不会影响app内创建线程,只影响wsgi内部的api,默认值为false。可以认为对用户无影响,使用默认值即可。参见:https://github.com/unbit/uwsgi/issues/1141
enable-threads=true
 
# 设置在平滑的重启(直到接收到的请求处理完才重启)一个工作子进程中,等待这个工作结束的最长描述。这个配置会使在平滑地重启工作子进程中,如果工作进程结束时间超过了8秒就会被强行结束(忽略之前已经接收到的请求而直接结束)
reload-mercy=8
 
# 通过使用POSIX/UNIX的setrlimit()函数来限制每个uWSGI进程的虚拟内存使用数。这个配置会限制uWSGI的进程占用虚拟内存不超过256M。如果虚拟内存已经达到256M,并继续申请虚拟内存则会使程序报内存错误,本次的http请求将返回500错误。
limit-as = 256
 
  
# 一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用(即重启)
harakiri = 60

第一步:安装

1
pip install uwsgi

第二步:启动

1
uwsgi --ini uwsgi.ini

 第三步:查看

1
ps aux | grep uwsgi

 第四步:如果需要重启可以根据pid重启

1
uwsgi --reload uwsgi.pid

 第五步:停止服务

1
uwsgi --stop uwsgi.pid

 http示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[uwsgi]
# 直接作为web服务器 【注意:这里的IP是阿里云的内网IP】
http=172.17.42.6:10000
# http=47.94.132.145:10000
 
# 项目目录
chdir=/home/weapp/weappProject
 
# uwsgi文件路径
wsgi-file=weappProject/wsgi.py
 
home = /home/.virtualenvs/weapp
PYTHONHOME = /home/.virtualenvs/weapp/bin
 
# 主进程
master=true
processes=4
threads=2
 
# 请求上线
max-requests=5000
 
# pid文件,用于脚本启动,停止
pidfile=/home/logs/weapp/uwsgi.pid
 
# 设置后台运行保存日志
daemonize=/home/logs/weapp/uwsgi.log
 
# 服务停止时自动停止unix Socket和pid文件
vacuum=true

 socket示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[uwsgi]
chdir=/home/git/www/cloudmonitor # 指定项目目录
home=/home/git/www/cloudmonitor/.env # 指定python虚拟环境
wsgi-file=manager.py # 指定加载的WSGI文件
callable=app # 指定uWSGI加载的模块中哪个变量将被调用
master=true # 启动主线程
processes=4 # 设置工作进程的数量
threads=2 # 设置每个工作进程的线程数
socket=127.0.0.1:8888 # 指定socket地址
vacuum=true # 当服务器退出时自动删除unix socket文件和pid文件
logfile-chmod=644 # 指定日志文件的权限
daemonize=%(chdir)/cloudmonitor.log # 进程在后台运行,并将日志打印到指定文件
pidfile=%(chdir)/cloudmonitor.pid # 在失去权限前,将主进程pid写到指定的文件
uid=git # uWSGI服务器运行时的用户id
gid=git # uWSGI服务器运行时的用户组id
procname-prefix-spaced=cloudmonitor # 指定工作进程名称的前缀

 摘(仅作备忘录)

posted @   乔小生1221  阅读(474)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示