小白第一次搞線上部署,很多東西都不懂,再次感謝邸同學的提點,學到了一些東西,現在将其記錄下來,避免以後重複遇到。
以波士頓房價預測為例,項目名為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 程序号