uwsgi

Django实战教程
  • 安装

    1
    2
    pip install uwsgi
    sudo apt-get install uwsgi-plugin-python3

    需要pcre支持sudo apt-get install libpcre3 libpcre3-dev

  • 配置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
    [uwsgi]

    project=pyuno
    uid=root
    gid=root
    base=/var/www

    # python 虚拟环境路径: home 或 pyhome 或 virtualenv 或 venv 参数 指向 virtualenv 根目录
    # home=%(base)/%(project)/venv
    virtualenv=%(base)/%(project)/venv
    PYTHONPATH=%(base)/%(project)/venv

    # 工作路径
    chdir=%(base)/%(project)
    # django wsgi 路径
    wsgi-file=./%(project)/wsgi.py
    # module=%(project).wsgi:application
    master=True
    # 设置进程 processes 和 workers 一样的意思
    processes=2
    # workers = 2
    vacuum=True
    max-requests=5000
    # 每个进场下面的线程数
    threads=4

    # http=0.0.0.0:9090
    # 监听端口
    socket=0.0.0.0:9090
    # socket=uwsgi/pyuno.sock
    chown-socket=%(uid):www-data
    chmod-socket=664

    # uwsig pid 号
    pidfile=./uwsgi/%(project).pid
    # 日志文件
    daemonize=./uwsgi/%(project).log
    # 运行状态
    stats=./uwsgi/pyuno.stats
    # stats = 127.0.0.1:9191

    # 重启的时候使用的 pid 号
    touch-reload=%(base)/%(project)/uwsgi/%(project).pid

    #设置一个请求的超时时间(秒),如果一个请求超过了这个时间,则请求被丢弃
    harakiri = 60
    #当一个请求被harakiri杀掉会,会输出一条日志
    harakiri-verbose = true
    # post 请求超过 字节 就缓存值磁盘
    post-buffering = 8192
    # 缓冲区大小
    buffer-size= 65535

    #开启内存使用情况报告
    memory-report = true

    #设置平滑的重启(直到处理完接收到的请求)的长等待时间(秒)
    reload-mercy = 10

    #设置工作进程使用虚拟内存超过N MB就回收重启
    reload-on-as= 1024
    # python 文件修改后自动重启
    python-autoreload=1

    # limit-as=500
  • 启动uwsgi uwsgin --ini uwsgi/uwsgi.ini,可以加到/etc/rc.local 开机会自动启动uwsgi,在ini文件里设置 py-auto-reload代码修改后自动重启uwsgi,还可以用 Supervisor设置守护进程。

  • 常用命令合集

    1
    2
    3
    4
    5
    6
    7
    8
    # 启动uwsgi
    uwsgi --ini uwsgi/uwsgi.ini

    # 重启uwsgi
    uwsgi --reload uwsgi/pyuno.pid

    # 停止uwsgi
    uwsgi --stop uwsgi/pyuon.pid
  • http 和 socket 区别

    • http: add an http router/server on the specified address
    • socket: bind to the specified UNIX/TCP socket using default protocol

📚 返回目录

本文作者:Samjoe Yang

本文链接: https://need.uno/django-course-uwsgi/

版权声明:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。

评论