Mac上使用uWSGI

作者: AnonyPer | 来源:发表于2018-06-28 16:25 被阅读19次
  • 通过pip install uwsgi 和brew install uwsgi的区别

pip install uwsgi 安装在python的目录下,在命令窗口下输入uwsgi会提示找不到该命令(MAC 环境下是这样,在服务器上都是直接通过pip 来安装)。

brew install uwsgi 会将uwsgi安装在/usr/local/Cellar/目录下,在全局可以直接使用uwsgi执行各种命令。

  • uwsgi命令
uwsgi --http-socket :8081 --plugin python --wsgi-file main.py --stats 127.0.0.1:8888 --daemonize /var/log/uwsgi.log

--http-socket :8081 指定端口号

--wsgi-file main.py 指定启动文件

--plugin python 指定使用python插件解析(遇到 unrecognized option ‘--uwsgi-file‘如 --module , --wsgi-file , --callable 等都可以使用该命令指定解析器,在Mac上使用brew 安装的uwsgi执行命令会提示有一些配置参数找不到)

deMacBook-Pro:site-packages anonyper$ uwsgi --http-socket :8081 --wsgi-file main.py
uwsgi: unrecognized option `--wsgi-file'
getopt_long() error
deMacBook-Pro:site-packages anonyper$

--stats 127.0.0.1:8888 在127.0.0.1:8888可以用过uwsgitop查看服务器性能状态

--daemonize /var/log/uwsgi.log 记录日志到该文件内(加了该命令后普通的杀掉进程之后服务还会重启,需要强制kill -9 才能杀掉,因为daemonize增加守护进程,使web服务更加稳定)

--disable-loggin, 不记录请求信息的日志。只记录错误以及uWSGI内部消息到日志中。

  • 在执行的py中需要有application方法或者使用web.py时转换一个application对象

如下

#!/usr/bin/python
def application(env, start_response):
    start_response('200 OK', [('Content_Type', 'text/html')])
    return "Congraduation!!! uWSGI Testing OK!!!"

或者

# -*- coding: utf-8 -*-
"""
@file: main.py

@time: 18-6-12
"""

import web
urls = (
    '/test/hello', 'hello',
)

app = web.application(urls, globals())


class hello:
    def GET(self):
        web.header("Access-Control-Allow-Origin", "*")
        post_data = dict(web.input())
        name = post_data.get('name', 'zhangsan')
        return 'Hello, ' + 'zhangsan' + '!' + name


if __name__ == "__main__":
    app.run()

以上都是main_test.py的内容,执行命令如下:

uwsgi --http-socket :8081 --plugin python --wsgi-file main_test.py
  • uwsgitop查看服务器性能(虽然没看明白有啥用)

安装uwsgitop可以使用pip install uwsgitop或者brew install uwsgitop

uwsgitop 127.0.0.1:8888

使用该命令需要在使用uwsgi命令时增加--stats 127.0.0.1:8888的命令

  • 通过配置文件,启动uwsgi服务

定义一个xxx.ini的文件,使用key=value的方式来写配置参数。然后在命令行中输入uwsgi xxx.ini(uwsgi --ini xxx.ini)如:

[uwsgi]
http-socket = :8081
plugin = python
wsgi-file = ./main_test.py
processes = 4 #workers个数,也是进程数
threads = 4 # 线程数
max-request = 20480

等价于在命令行输入

uwsgi --http-socket :8081 —plugin python --wsgi-file main.py --processes 4 --threads 4 --max-request 20480
  • 其他配置
--master(-M), 启动主进程,方便管理所有进程, 可以配合--pidfie 使用。方便停止(uwsgi --stop /tmp/uwsgi.pid)/重启uwsgi ( uwsgi --reload /tmp/uwsgi.pid)
--listen (-l), 内核监听(listen)网络队列的长度,受文件操作系统最大的网络连接数(net.core.somaxconn) 的限制, 长度越大意味着在高并发的环境下,丢失请求越少。
--memory-report, 开启内存占用报告(uwsgitop中可以看到) 
  • 参考消息

http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html

https://uwsgi-docs.readthedocs.io/en/latest/

相关文章

  • Mac上使用uWSGI

    通过pip install uwsgi 和brew install uwsgi的区别 pip install uw...

  • uwsgi服务器部署

    使用pip安装uwsgi和uwsgi pip安装uwsgi后,Linux命令行敲击uwsgi --help后,提示...

  • Nginx + uwsgi 部署Django

    建议使用虚拟环境隔离 安装配置uwsgi 安装uwsgi 配置uwsgi配置文件 启动uwsgi测试 nginx ...

  • nginx与uWsgi

    什么是nginx 为什么使用nginx nginx、WSGI、uwsgi、uWSGI nginx和uWSGI 的意...

  • django项目部署

    一、uwsgi直接作为服务器使用 安装:pip install uwsgi 启动:uwsgi --ini xxx....

  • ubuntu 上使用uwsgi + nginx部署 Djang

    1.安装nginx、Django、uwsgi 2.项目目录下配置uwsgi.ini 使用命令 uwsgi --in...

  • 在Mac 上使用uWsgi和nginx 部署flask程序

    原来使用Apache2和mod_wsgi来部署flask程序,用起来挺好。后来程序更新后安装mod_wsgi一直成...

  • uwsgi部署是pip报错

    在ubuntu上部署django项目使用uwsgi + nginx,在pip install uwsgi时出现了错...

  • 【错】ImportError: No module named

    使用uwsgi --ini uwsgi.ini可以运行,但是使用系统服务启动时却报错 但是项目的是有SQLAlch...

  • uWSGI

    uWSGI uWSGI是使用C编写的,显示了自有的uwsgi协议的Web服务器。它自带丰富的组件,其中核心组件包含...

网友评论

    本文标题:Mac上使用uWSGI

    本文链接:https://www.haomeiwen.com/subject/qxbgyftx.html