国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python+flask實(shí)現(xiàn)API的方法

2020-01-04 14:00:35
字體:
供稿:網(wǎng)友

本文為大家分享了python+flask實(shí)現(xiàn)API的具體方法,供大家參考,具體內(nèi)容如下

Flask 框架

#-*-coding:utf-8-*- #pip install flask#pip install flask-restful from flask import Flask app = Flask(__name__) @app.route('/')def index():  return "hello world!" if __name__ == '__main__':  app.run(debug=True)

pycharm運(yùn)行該程序后,在瀏覽器輸入http://127.0.0.1:5000/,即可看到一個(gè)網(wǎng)頁:

python,flask,API

Flask + flask_restful創(chuàng)建一個(gè)簡單的應(yīng)用程序:

from flask import Flaskfrom flask_restful import Resource,Api app = Flask(__name__)api = Api(app)class HelloWorld(Resource):  def get(self):    return {"hello":"world"} api.add_resource(HelloWorld,'/') if __name__ == '__main__':  app.run(debug=True)

python+flask創(chuàng)建API: 獲取post請求傳遞的json數(shù)據(jù)

from flask import Flask,abort,jsonify,make_response,request app = Flask(__name__) @app.route('/analyze/' ,methods=['POST'])def call_wiscan_analyze():  if not request.json or not 'path' in request.json:     abort(400)  path = request.json['path']  if __name__ == '__main__':  app.run(port='50055',debug=True)

請求:

from requests import post if __name__ == '__main__':  path='"F:/nb_org_data/86574FG01/2013/1029/0008/86574FG01201310290008.img"'  ret = post('http://localhost:50055/analyze/',json={'path':path})  print(ret.text)

將API封裝為win32服務(wù)

import win32serviceutilimport win32serviceimport win32eventimport win32timezonefrom flask import Flask,abort,jsonify,make_response,requestimport threading app = Flask(__name__)_ONE_DAY_IN_SECONDS = 60 * 60 * 24 @app.route('/analyze/' ,methods=['POST'])def call_wiscan_analyze():  if not request.json or not 'path' in request.json:     abort(400)  path = request.json['path'] def thread_target():  app.run(port='50055', debug=True) class GRPCWin32Client(win32serviceutil.ServiceFramework):  _svc_name_ = 'GRPCWin32Client'  _svc_display_name_ = 'Nuctech GRPC Client'  _svc_description_ = 'wiscan grpc client'   def __init__(self, args):    win32serviceutil.ServiceFramework.__init__(self, args)    self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)    #self.logger = self._getLogger()    self.run = True   def SvcDoRun(self):    th = threading.Thread(target=thread_target)    th.start()    try:      while self.run:        time.sleep(_ONE_DAY_IN_SECONDS)     except KeyboardInterrupt:      pass     pass   def SvcStop(self):    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)    win32event.SetEvent(self.hWaitStop)    self.run = False if __name__ == '__main__':  import sys  import servicemanager  if len(sys.argv) == 1:    try:      evtsrc_dll = os.path.abspath(servicemanager.__file__)      servicemanager.PrepareToHostSingle(GRPCWin32Client)      servicemanager.Initialize('GRPCWin32Client', evtsrc_dll)      servicemanager.StartServiceCtrlDispatcher()    except win32service.error as details:      import winerror      if details == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:        win32serviceutil.usage()  else:    win32serviceutil.HandleCommandLine(GRPCWin32Client) 

注意:

啟動一個(gè)線程運(yùn)行app.run(),否則安裝完win32服務(wù),啟動服務(wù)后,無法停止服務(wù),因?yàn)閍pp內(nèi)部循環(huán)沒有結(jié)束!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 塔河县| 临泽县| 肃南| 大姚县| 麻城市| 宜川县| 北辰区| 霍城县| 兰考县| 麻江县| 吉隆县| 西宁市| 专栏| 齐齐哈尔市| 界首市| 萨迦县| 敖汉旗| 七台河市| 大港区| 靖州| 老河口市| 鸡西市| 来凤县| 浮山县| 盐亭县| 陵川县| 桑日县| 梁平县| 凯里市| 永胜县| 吴旗县| 习水县| 姚安县| 蓬莱市| 江达县| 淳安县| 壤塘县| 卓尼县| 海伦市| 广东省| 鹤庆县|