天天看點

使用程序守護supervisor監控管理項目

小白第一次搞線上部署,很多東西都不懂,再次感謝邸同學的提點,學到了一些東西,現在将其記錄下來,避免以後重複遇到。

以波士頓房價預測為例,項目名為house_predict

1.使用flask架構開發服務,檔案名為:house_serve.py

from flask import Flask
from house_price_predict import house_predict #這個函數包含了所有字段處理和模型調用的代碼,#隻要傳入參數字典就能傳回預測結果

app_house = Flask(__name__)

@app.route('/', methods=['get'])
def index():
    return 'Hello Index Page!'

@app.route('/api/house_price', methods=['GET','POST'])
def index_1():
    result = {"msg": "", "error": 0, "data": {}}
    if request.method == 'GET':
        return 'Hello Index Page!'
    else:
        js = request.get_json(force=True) #擷取post傳入的參數,參數格式                
                                          #{"room_nums":"3"}
        price = house_predict(js)
    if price:
        result = {"msg": "", "error": 0, "data": {price}}
    else:
        result = {"msg": "", "error": 1, "data": {'error info'}}
    return result


app_house.run(host='0.0.0.0', port=12345)
           

2.使用gunicorn設定并發

2.1安裝gunicorn【其他方法可自行百度】:

pip install gunicorn
           

2.2安裝完了就可以設定并發,有兩種場景

場景一:直接在伺服器上跑并發服務

gunicorn -w 3 -b 127.0.0.1:8080 house_serve:app_house
           

-w:設定并發時子程序數量 

-b:設定IP位址和端口号

house_serve是flask架構所在的檔案名,app_house是flask啟動的app名字

如果想檢視程序,使用ps -ef|grep gunicorn

關閉程序使用 kill -9 +主程序号

場景二:使用程序守護設定并發

1)安裝supervisor:pip install  supervisor

由于使用pip安裝,supervisor儲存在了 /usr/local/python/bin,為了友善使用,把它扣出來

echo_supervisord_conf > /usr/supervisor/supervisord.ini

2)在伺服器上/usr/supervisor/建立檔案夾/usr/supervisor/supervisord.d/,在此檔案夾中為程序建立配置檔案house.conf【使用preload可以輸出錯誤資訊】

#項目目錄
directory=/home/project/house_predict
command=/home/local/python3/bin/gunicorn -w 3 -b 127.0.0.1:8080 
        house_serve:app_house --preload
autostart=true
autorestart=true
stderr_logfile=/home/project/house_predict/logs/house.err.log
stdout_logfile=/home/project/house_predict/logs/house.out.log
           

3)回到/usr/supervisor/,用vim打開supervisor.ini

[include]
files = /usr/supervisor/supercisord.d/*.conf
           

4)啟動supervisor

supervisord -c /usr/supervisor/supervisord.ini
           

5)背景檢視程序

ps -ef|grep supervisor
           

6)關閉程序

kill -9 程序号