之前由于部署websocket應(yīng)用,需要同時(shí)開(kāi)啟多個(gè)uWSGI應(yīng)用,想著如果開(kāi)幾個(gè)應(yīng)用就敲幾行代碼實(shí)在是太蠢叽掘,于是去看了以下官方文檔,官方給出了emperor的實(shí)現(xiàn)方法玖雁,具體可以看 http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Emperor.html
但是官方的說(shuō)明文檔對(duì)新手不是那么友好更扁,不符合拿來(lái)就用的簡(jiǎn)單粗暴,下面附上我自己項(xiàng)目的實(shí)現(xiàn)方法赫冬,僅供參考疯潭。
先簡(jiǎn)單介紹以下我的項(xiàng)目的目的,我的項(xiàng)目是用flask搭建的一個(gè)服務(wù)器面殖,需要在8000~8003這4個(gè)端口用uWSGI開(kāi)啟竖哩。
單獨(dú)開(kāi)一個(gè)應(yīng)用使用的命令為
uwsgi --http :8000 --gevent 1000 --http-websockets --master --wsgi-file app.py --callable app
如果需要使用emperor可以將配置寫(xiě)入.ini文件
[uwsgi]
http = :8000
wsgi-file = run_server.py
gevent = 1000
http-websockets = true
master = true
callable = app
我將http端口號(hào)為8000~8003的四個(gè)ini文件放入項(xiàng)目路徑下的/config/uwsgi,命名為8000.ini, 8001.ini, 8002.ini, 8003.ini
用ini啟動(dòng)一個(gè)uWSGI應(yīng)用的命令為
uwsgi --ini (項(xiàng)目路徑)/config/uwsgi/8000.ini
用emperor啟動(dòng)多個(gè)的命令為
uwsgi --emperor (項(xiàng)目路徑)/config/uwsgi/ --vassal-set chdir=(項(xiàng)目路徑) --daemonize /var/log/uwsgi/emperor.log
解釋一下其中用到的配置參數(shù),uWSGI 會(huì)將--emperor 后面跟的路徑目錄下所有滿足要求的配置文件聲稱一個(gè)應(yīng)用脊僚,--vassal-set可以給配置文件傳參,--daemonize 表示后臺(tái)運(yùn)行并將日志輸出到指定路徑
關(guān)閉emperor
找到emperor的pid
kill -INT pid