• Django项目操作uwsgi


    python操作uwsgi:

    uWSGI是一个web server,并且独占uwsgi协议,但是同时支持WSGI协议,HTTP协议,主要的功能就是将HTTP协议转化成语言支持的网络协议供python使用;

    那么,为什么我们要使用nginx和uwsgi实现线上项目的测试呢?

    Nginx--uWSGI--Django--uWSGI--Nginx

    • nginx中HttpUwsgiModule与uWSGI服务器进行交换;
    • uWSGI调用django触发请求和相应,字典方式给django参数方法级别的调用,你不是数据传输;
    • web服务器网关接口,实现了WSGI协议与http协议
    • uwsgi启动不会像runserver那样自动重载,django只需要stop_start进行uwsgi开启和停止
    • uwsgi启动后,django项目的程序已变成后台守护进程,不需要runserver,在关闭当前终端时此进程也不会停止;

    项目使用生产环境时,考虑到并发的性能,可能就是会使用Nginx与uwgsi;

    1. 安装uwsgi

      pip3 install uwsgi
      
    2. uwsgi执行一般有两种方式:命令行和文件配置。但是命令行需要标记很多参数,采用文件配置更为方便;

      文件格式支持很多种,比如ini,xml,yaml等等,以下用uwsgi.ini配置举例:+-

      [uwsgi]
      socket = 0.0.0.0:18000
      # http=127.0.0.1:8000
      http = 0.0.0.0:8000
      chdir = /home/ubuntu/zhaodabao/quick_app4.0
      module = Quick_application.wsgi
      home = /home/ubuntu/.virtualenvs/quickappv4
      master = true
      processes = 5
      harakiri = 10
      daemonize = /data/logs/quickappv4/uwsgi.log
      vacuum = True
      buffer-size = 32768
      
      
      1. Socket:双方可以主动的发送数据,客户端和服务端直接使用socket进行连接,可保持连接通道;
      2. http:客户端主动发起请求,服务器响应,服务器不能主动发起响应。一次性请求完毕后断开连接,节省资源;
      3. master:是否启动主进程来管理其他进程;
      4. chdir:项目的跟目录
      5. module: Django项目的wsgi文件的相对路径
      6. home:虚拟环境的目录
      7. worker:开启的进程数量
      8. reload-mercy:设置在平滑的重启(直到接收请求处理完重启)一个工作子进程中,等待这个工作结束的最长秒数;
      9. vacuum:服务结束后删除对应的socket和pid文件
      10. buffer-size:设置用于uwsgi包解析内存的缓存区大小
      11. pid_file:指定pid文件
      12. harakiri:请求超时时间
      13. limit_as:限制每个uwsgi进程占用的虚拟内存数目
      14. daemonize:进程后台执行,并保存日志到特定的路径
    3. 修改settings.py

      DEBUG = false
      ALLOWED_HOST = ['网站域名']或者['服务监听IP地址']
      
    4. 启动uwsgi.ini和终止uwsgi

      uwsgi --ini 项目文件夹/uwsgi.ini
      uwsgi --stop uwsgi.pid
      
  • 相关阅读:
    CSS text-indent 属性
    从零开始搭建一个简单的基于webpack的vue开发环境
    mui is not defined
    vue项目中引入mui.poppicker.js文件时报错“Uncaught ReferenceError: mui is not defined”
    vue-cli创建的项目中引入第三方库报错'caller', 'calle', and 'arguments' properties may not be...
    微信小程序点击顶部导航栏切换样式
    js学习笔记-日期对象
    setTimeout()和setInterval()的用法及区别
    Ubuntu 14.04 下安装redis后运行redis-cli 报出redis Connection refused错误【已解决】
    Ubuntu start:未知任务:mysql
  • 原文地址:https://www.cnblogs.com/Zhao159461/p/13332237.html
Copyright © 2020-2023  润新知