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 # 指定工作进程名称的前缀 |
摘(仅作备忘录)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了