背景:構(gòu)建了一個(gè)分析模型,需要提供給用戶遠(yuǎn)程調(diào)用模型,獲取到計(jì)算結(jié)果。
目標(biāo):通過(guò)Flask簡(jiǎn)單搭建一個(gè)服務(wù),定義參數(shù),實(shí)現(xiàn)遠(yuǎn)程調(diào)用。

Flask
一、需求說(shuō)明
本地開(kāi)發(fā)了一個(gè)自動(dòng)填充識(shí)別地址規(guī)范性的模塊,可以檢測(cè)缺失的地址段,并補(bǔ)充上。
具體需求如下:
接口地址:http://ip:port/query/rydjdz
請(qǐng)求類型:application/json
請(qǐng)求方式:post
接口備注:根據(jù)地址名稱匹配標(biāo)準(zhǔn)地址地址編碼
調(diào)試工具:Postman
***二、Flask 接收請(qǐng)求
請(qǐng)求包含兩個(gè)參數(shù)dzmc和dzpd,需要通過(guò)處理后返回給用戶。
本次測(cè)試中模型簡(jiǎn)化,意思表達(dá)到位就行。
from flask import Flask,request
import json
app=Flask(__name__)
@app.route("/query/rydjdz",methods=["POST"])
def rydjdz():
# 默認(rèn)返回內(nèi)容
return_dict= {'"code"': '1',"message":'', "data": False}
# 判斷傳入的json數(shù)據(jù)是否為空
if request.get_data() is None:
return_dict['return_code'] = '5004'
return_dict['return_info'] = '請(qǐng)求參數(shù)為空'
return json.dumps(return_dict, ensure_ascii=False)
# 獲取傳入的參數(shù)
get_Data=request.get_data()
# 傳入的參數(shù)為bytes類型,需要轉(zhuǎn)化成json
get_Data=json.loads(get_Data)
dzmc = get_Data.get('dzmc')
dzpd= get_Data.get('dzpd')
# 對(duì)參數(shù)進(jìn)行操作
zt = zt_model(dzmc)
return_dict['data'] = test_model(dzmc,dzpd,zt)
return (json.dumps(return_dict, ensure_ascii=False))
# 功能函數(shù)
def zt_model(dzmc):
if len(dzmc) > 10:
zt = '正確'
else :
zt = '錯(cuò)誤'
return (zt)
def test_model(dzmc,dzpd,zt):
result_str = "本地{},狀態(tài)為{},地址判斷結(jié)果為{}".format(dzmc,dzpd,zt)
return (result_str)
if __name__ == '__main__':
app.run(debug=True)
直接運(yùn)行后會(huì)報(bào)錯(cuò)
* Serving Flask app "__main__" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
An exception has occurred, use %tb to see the full traceback.
SystemExit: 1
D:\Program\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:3334: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
查看了解決方式后將代碼修改:
from gevent import pywsgi
if __name__ == '__main__':
server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
server.serve_forever()
三、發(fā)送請(qǐng)求測(cè)試
import requests
url = "http://ip:port/query/rydjdz"
data = '''{
"dzmc": "hanzhichao",
"dzpd": 18
}'''
res = requests.post(url=url, data=data) # data支持字典或字符串
print(res.text) #查看請(qǐng)求詳情
print(res.json) #查看接收結(jié)果
或者通過(guò)postman進(jìn)行請(qǐng)求發(fā)送

請(qǐng)求結(jié)果
四、其他
多個(gè)參數(shù)進(jìn)行修改:
[{"dzmc":"AAAAAA","dzpd":1},{"dzmc":"BBBBBB","dzpd":1}]