PersonEval为已经建好的django项目,如何利用django建立web服务见Django实现算法web服务_Mugo_Moon的博客-CSDN博客
uwsgi直接与业务方之间通信使用http/https协议,区别于nginx调用uwsgi的socket传输方式
uwsgi默认单进程单线程,可通过--processes及--threads参数增加进程和线程数,并可通过nginx来提高并发数,详见Nginx上线uwsgi+django项目(nginx部署uwsgi+django算法集群)_Mugo_Moon的博客-CSDN博客
1、命令行模式
[root@100-020-gpuserver PersonEval]# uwsgi --http 0.0.0.0:8000 --file PersonEval/wsgi.py --processes 4 --threads 2
2、uwsgi.ini文件模式
(1)PersonEval项目下新建uwsgi文件夹,在其下面新建uwsgi.ini文件(或直接在项目下建文件也行,only排版不好看而已)
# uwsig使用配置文件启动
[uwsgi]
master = true
processes = 4
# 项目所在的根目录
chdir=/data/Djgango_example/PersonEval/
# 指定项目的application,区别于启动命令--wsgi-filemysite/wsgi.py
module=PersonEval.wsgi:application
pythonpath=/root/anaconda3/bin/python
#the local unix socket file than commnuincate to Nginx
# 指定sock的文件路径,这个sock文件会在nginx的uwsgi_pass配置,用来nginx与uwsgi通信
# 支持ip+port模式,直接使用http协议,区别于nginx调用uwsgi的socket传输方式
http = 0.0.0.0:8000
# 存放进程编号的文件
pidfile=/data/Djgango_example/PersonEval/uwsgi/uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。以前的runserver是依赖终端的
daemonize = /data/Djgango_example/PersonEval/uwsgi/logs/uwsgi.log
#自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
#logto = /data/Djgango_example/fmc_pigident/companyuwsgi.log
autostart = true
startsecs = 5
autorestart = true
startretries = 3
#evil-reload-on-as = 16000
#evil-reload-on-rss = 16000
[uwsgi]
# uwsgi 启动时所使用的地址与端口
http = 0.0.0.0:8000
# 指向网站目录
chdir = /opt/algorithm/PersonEval
# python 启动程序文件
wsgi-file = app.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 8
# 线程数
threads = 16
#状态检测地址
stats = 127.0.0.1:9298
enable-threads = true
# 是否启动定时调度模块, 以及
mule = cron.py
#长连接
http-keepalive = 1
add-header=Connection: Keep-Alive
(2)命令行启动
[root@100-020-gpuserver PersonEval]# uwsgi --ini uwsgi/uwsgi.ini
(3)查看并终止进程
#查看进程
[root@100-020-gpuserver PersonEval]# ps -aux | grep uwsgi
root 7433 0.0 0.1 277152 37768 ? S 15:48 0:00 uwsgi --ini uwsgi/uwsgi.ini
root 7434 0.0 0.1 277552 33512 ? S 15:48 0:00 uwsgi --ini uwsgi/uwsgi.ini
root 7435 0.0 0.1 277936 31740 ? S 15:48 0:00 uwsgi --ini uwsgi/uwsgi.ini
root 12031 0.0 0.0 112536 828 pts/0 R+ 16:22 0:00 grep --color=auto uwsgi
#中止进程
#依靠uwsgi.pid,若没有通过lsof -i :8000查看id,添加到新建的uwsgi.pid文件中即可
[root@100-020-gpuserver PersonEval]# uwsgi --stop uwsgi/uwsgi.pid