Python通过Flask在虚拟机部署服务及API接口调用

通常我们需要要云端发布一个算法微服务,然后别人可以通过你的API来调用你的算法服务,以下为使用Python中Flask发布算法模型的部署,包括服务端和客户 端两部分,以及在使用过程中的注意事项。

直接上干货,文件名称为flask_model.py

import numpy as np
from flask import Flask
from flask import request
from flask import jsonify
from sklearn.externals import joblib
#导入模型
model = joblib.load('model.pickle')
 
#temp =  [5.1,3.5,1.4,0.2]
#temp = np.array(temp).reshape((1, -1))
#ouputdata = model.predict(temp)	
##获取预测分类结果
#print('分类结果是:',ouputdata[0])
 
app = Flask(__name__)
 
@app.route('/func',methods=['POST','GET'])
def output_data():
    text=request.args.get('inputdata')
    if text:
        temp =  [float(x) for x in text.split(',')]
        temp = np.array(temp).reshape((1, -1))
        ouputdata = model.predict(temp)	
        return jsonify(str(ouputdata[0]))
if __name__ == '__main__':
    app.config['JSON_AS_ASCII'] = False
    app.run(host='127.0.0.1',port=5003)  # 127.0.0.1 #指的是本地ip
    
print('运行结束')

在cmd命令行中执行命令

>>> python flask_model

客户端实时预测

调用API接口,GET服务的调用格式

import requests
base = 'http://127.0.0.1:5002/func/?inputdata=5.1,3.5,1.4,0.2'
response = requests.get(base)
answer = response.json()
print('预测结果',answer)

调用API接口,POST服务的调用格式

url = 'http://127.0.0.1:5002/func'
data = {"inputdata":json.dumps(test1)}
#POST 请求
response = requests.post(url,data)
#返回结果 
print(response)
answer = response.json()
print('预测结果',answer)

Flask服务需要注意的几个事项:

request.form.get(“key”)#为Post服务获取数据
request.args.get(“key”)#为Get服务获取数据
Flask服务获取到的为JSON字符串,需要将其转换为JSON数组格式,以下为JSON数组 和JSON字符串的格式互换
test = json.loads(test) #将JSON字符串转换为JSON数组
test = json.dumps(test) #将JSON数组转换为JSON字符串
有时候读进来的文件中有换行符,将文本中的换行符去掉,命令如下:
#将文件的所有换行符替换掉
text=re.sub(’\n’,’’,text)
text=re.sub(’\r’,’’,text)
客户端API接口调用
调用时传入的为JSON格式,或JSON字符串

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值