首页 > 其他分享 >django项目使用uwsgi方式启动

django项目使用uwsgi方式启动

时间:2022-11-03 11:23:07浏览次数:115  
标签:1.4 请求 启动 pid django uwsgi 日志 uWSGI

django项目使用uwsgi方式启动

环境:虚拟机ubuntu 20.0 django2.2 python3.6.8

基于docker 部署

前言目的:

python manage.py runserver单进程的启动方式,更改为使用uwsgi多进程方式启动,增加服务并发数

知识补充 WSGI /uwsgi /uWSGI

WSGI:是python Web服务器网关接口。是python应用程序/框架和Web服务器之间通信的一种规范,通信协议

uwsgi:是线路协议,常用于uWSGI服务器与其他网络服务器的数据通信

uWSGI:实现了uwsgi和WSGI两种协议的Web服务器

uWSGI环境安装:pip install uwsgi

文件配置:在项目根目录下(manage.py同级目录), 创建名为 uwsgi.ini的文件,文件内容如下

[uwsgi]
# 项目绝对路径
chdir = /root/TinyscanWebServer/
;套接字方式的IP地址:端口号【此模式需要有nginx,如果只用uwsgi的话可以忽略此项】
;socket=0.0.0.0:8000
# 监听的端口,当没有nginx时使用这个
http = 0.0.0.0:8000
# 静态资源代理  映射目录,实际静态目录
;static-map = /static= /root/TinyscanWebServer/static
# 主应用中的wsgi文件
wsgi-file = /root/TinyscanWebServer/TinyscanWebServer/wsgi.py

# 启动一个master进程来管理其他的子进程
master = True
# 开启四个进程
processes = 4
# 两个线程
thread = 2
# 设置每个工作进程处理请求上限,达到上限时,将回收/重启,可预防内存泄漏
max-request = 5000
# 服务停止时自动移除unix socket和pid 文件
vacuum = True

# uwsgi 日志
#daemonize = /root/TinyscanWebServer/logs/uwsgi.log
logto = /root/TinyscanWebServer/logs/ty_log.log
# 日志格式化
logformat = %(ltime) | pid:%(pid) wid:%(wid) | %(proto) %(status) | %(method) | %(host)%(uri) | request_body_size:%(cl) | response_body_size:%(rsize)

# 服务的pid记录文件
pidfile = uwsgi.pid

uWSGI日志文件配置说明

  • daemonize配置日志方式会以后台守护进程的方式写入配置的日志文件

  • logto 会以非后台守护进程方式写入日志文件,适用于docker 部署的方式

docker部署,在uwsgi启动过程中,docker 日志中出现[uWSGI] getting INI configuration from uwsgi.ini,uwsgi.log 日志也并没有报错,但是容器却起不来,很有可能就是uWSGI的配置文件中配置了daemonize,改为logto 就可以了。

uWSGI格式化参数说明

可参照官网:https://doc.codingdict.com/uwsgi/uwsgi-docs-zh.readthedocs.io/zh_CN/latest/LogFormat.html

# 这些是从当前请求内部的 wsgi_request 结构获取的。
%(uri) -> REQUEST_URI
%(method) -> REQUEST_METHOD
%(user) -> REMOTE_USER
%(addr) -> REMOTE_ADDR
%(host) -> HTTP_HOST
%(proto) -> SERVER_PROTOCOL
%(uagent) -> HTTP_USER_AGENT (自1.4.5起)
%(referer) -> HTTP_REFERER (自1.4.5起)

# 这些是简单的函数,调用来生成日志变量值:
%(status) -> HTTP响应状态码
%(micros) -> 响应时间,以微秒为单位
%(msecs) -> 响应时间,以毫秒为单位
%(time) -> 请求开始的时间戳
%(ctime) -> 请求开始的ctime
%(epoch) -> Unix格式的当前时间
%(size) -> 响应体大小 + 响应头大小 (自1.4.5起)
%(ltime) -> 人类可读(Apache风格)的请求时间 (自1.4.5起)
%(hsize) -> 响应头大小 (自1.4.5起)
%(rsize) -> 响应体大小 (自1.4.5起)
%(cl) -> 请求内容体大小 (自1.4.5起)
%(pid) -> 处理请求的worker的pid (自1.4.6起)
%(wid) -> 处理请求的worker的id (自1.4.6起)
%(switches) -> 异步切换数 (自1.4.6起)
%(vars) -> 请求中的CGI变量数 (自1.4.6起)
%(headers) -> 已生成的响应头数 (自1.4.6起)
%(core) -> 运行请求的核心 (自1.4.6起)
%(vsz) -> 地址空间/虚拟内存使用 (单位为字节) (自1.4.6起)
%(rss) -> RSS内存使用 (单位为字节) (自1.4.6起)
%(vszM) -> 地址空间/虚拟内存使用 (单位为MB) (自1.4.6起)
%(rssM) -> RSS内存使用 (单位为MB) (自1.4.6起)
%(pktsize) -> 内部的请求uwsgi包大小 (自1.4.6起)
%(modifier1) -> 请求的modifier1 (自1.4.6起)
%(modifier2) -> 请求的modifier2 (自1.4.6起)
%(metric.XXX) -> 访问XXX度量值 (见 度量(Metrics)子系统)
%(rerr) -> 请求的读错误数 (自1.9.21起)
%(werr) -> 请求的写错误数 (自1.9.21起)
%(ioerr) -> 请求的读写错误数 (自1.9.21起)
%(tmsecs) -> 请求开始时间戳,自纪元起,单位为毫秒 (自1.9.21起)
%(tmicros) -> 请求开始时间戳,自纪元起,单位为微秒 (自1.9.21起)
%(var.XXX) -> 请求变量XXX的内容 (例如var.PATH_INFO,自1.9.21起可用)

启动服务:uwsgi --ini uwsgi.ini

Django中代码有任何修改,都需要重启uwsgi

标签:1.4,请求,启动,pid,django,uwsgi,日志,uWSGI
From: https://www.cnblogs.com/yyx0417/p/16853818.html

相关文章

  • Django生成静态页面和使用缓存
       生成并使用静态页面importosfromdjango.shortcutsimportrenderfromdjango.template.loaderimportrender_to_stringdefmy_view(request):co......
  • Django --根据已有表生成ORM模型
    在实际开发中,有些时候可能数据库已经存在了。如果我们用Django来开发一个网站,读职的是之前已经存在的数据库中的数据。那么该如何将模型与数据库中的表映射呢?根据旧的数......
  • k8s节点升级cpu与内存后,静态pod无法启动-cpuManagerPolicy
    简述: 最近k8s master内存压力比较大, pod数量越来越多, 打算对cpu 内存进行扩容扩容有 cpu4C/8G, 变更成8C/16G, 通过升级后,发现apiserver 静态pod无法启动,在kube......
  • django中间件以及自定义中间件
    middleware中间件就是在目标和结果之间进行的额外处理过程,在Django中就是request和response之间进行的处理,相对来说实现起来比较简单,但是要注意它是对全局有效的,可以在全......
  • 0004.Django Template之模板标签
    网页强制刷新:ctrl+F5常用标签模板标签作用,可以在模板中进行各种逻辑操作,比如,循环、判断等1.语法{%loadstatic%}    #加载第三方标签{%tag%}[{%endtag%......
  • python基于django的餐厅在线点餐选座系统的设计与实现
    ......
  • [Django]页面跳转踩坑的路径问题
    搞了一个下午,踩各种坑,下面记录一下踩坑过程创建pythonapp的模板后,在项目文件夹的urls.py中写(index.html为主页面,hello.html是要跳转的页面)fromdjango.urlsimportpath,......
  • kvmtool启动linux虚拟系统
    1、获取kvmtoolgitclonehttps://github.com/kvmtool/kvmtool.gitcdkvmtoolmake-j256编译成功后生成lkvm可执行程序。2、编译Linux内核wgethttps://mirrors.edg......
  • 解决IIS首次启动加载慢的问题
    最近做了一个定时任务,本地,远程都测过没有问题,部署到站点上设置每天3点执行。结果第二天发现并没有执行成功。层层排查发现是定时任务的站点不在进程中,原来IIS中的站点启动......
  • DJango + Vue 文件下载
    后端importrequestsfromdjango.httpimportFileResponsefromdjango.utils.encodingimportescape_uri_pathdefdownload_file(request): ifrequest.method==......