0. 安装uwsgi
转自官网
使用pip install uwsgi就可以,当然了也可以下载源码自己make。
1.配置uwsgi
uwsgi 有多种配置可用:
1,ini ,
2,xml ,
3,json
4,yaml。
这里我使用的ini,当然也可以使用命令行加参数的那种方式,可是每次都输入那么多太麻烦了。推荐走ini文件配置
1.1 ini格式说明
1,ini配置为 key=value 形式
2,在ini配置文件里,#号为注释,
3,布尔值为 true 和 false
● 常用选项:
socket : 可以是地址和端口号,例如:socket = 127.0.0.1:8080;也可以是socket文件,例如socket = /www/web/script/uwsgi.sock。内部访问使用,配合nginx的时候使用,外部无法直接访问
http:地址加端口号 127.0.0.1:8080,这个端口号是直接外部访问的。
processes : 开启的进程数量
workers : 开启的进程数量,等同于processes。
chdir : 是你项目的路径,在app加载前会切换到此目录下。对我来说,就是我python程序所在的路径
module: 制定要加载的程序。
wsgi-file : 载入wsgi-file(load .wsgi file)
stats : 在指定的地址上,开启状态服务(enable the stats server on the specified address)
threads : 运行线程。由于GIL的存在,我觉得这个真心没啥用。(run each worker in prethreaded mode with the specified number of threads)
master : 允许主进程存在(enable master process)
daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。
log-maxsize :以固定的文件大小(单位KB),切割日志文件。 例如:log-maxsize = 50000000 就是50M一个日志文件。
pidfile : 指定pid文件的位置,记录主进程的pid号。
vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)
disable-logging : 不记录请求信息的日志。只记录错误以及uWSGI内部消息到日志中。如果不开启这项,那么你的日志中会大量出现这种记录
enable-threads: 为true,启动线程
post-buffering: 设置缓冲 列入 post-buffering-4096
设置静态文件:static-map = /static=//www/wwwroot/mysite/static
daemonize:使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(不会影响nginx日志的输出)
daemonize = /www/wwwroot/mysite/uwsgi.log
pythonpath:给PYTHONPATH 增加一个目录(或者一个egg),最多可以使用该选项64次。
pidfile:在失去权限前,将master的pid写到当前文件中
protocol:设置默认的通信协议(uwsgi,http,fastcgi)
harakiri:这个选项会设置harakiri超时时间(可以看wiki首页的相关内容)。如果一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用(即重启)。
buffer-size:设置用于uwsgi包解析的内部缓存区大小。默认是4k。
如果你打算接受一个拥有很多请求头的大请求,你可以增加这个值到64k。
这个命令会允许uWSGI服务器接收最大为32k的uwsgi包,再大的包就会被拒绝。
chmod-socket or chmod:unix socket是个文件,所以会受到unix系统的权限限制。如果你的uwsgi客户端没有权限访问uWSGI socket,你可以用这个选项设置unix socket的权限。
当在xml配置文件中只是用这个选项作为一个标识符,那么会将权限设为666,否则就是设置为指定的权限值。
chmod-socket = 755
auto-procname: 这个选项将自动给uWSGI的进程设置一些有意义的名字,例如“uWSGI master”, “uWSGI worker 1”, “uWSGI worker 2”
2.使用方法
命令行输入
uwsgi --ini myconf.ini
###或者
uwsgi myconf.ini
### 重启
uwsgi --reload uwsgi.pid
###关闭
uwsgi --stop uwsgi.pid
3.举例
这是我的程序
这是我的配置文件
4819是给nginx使用的,4919是当时为了方便测试观看,后来就停掉了。
参考
https://www.jianshu.com/p/07458e99198a
https://blog.youkuaiyun.com/chenggong2dm/article/details/43937433
最后求关注,求点赞,欢迎大家关注我的公众号
记录所学所用,包括但不限于遥感、地信、气象、生态环境,机器学习知识,相关文献阅读,编程代码实现。偶尔荒腔走板的聊聊其他。欢迎不同领域的朋友们加入进来,多多交流。