亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

java遠(yuǎn)程調(diào)用python腳本講解 java執(zhí)行python代碼


java遠(yuǎn)程調(diào)用python腳本講解 java執(zhí)行python代碼

文章插圖
1. 問(wèn)題描述Java平臺(tái)要調(diào)用Pyhon平臺(tái)已有的算法 , 為了減少耦合度 , 采用Pyhon平臺(tái)提供Restful 接口 , Java平臺(tái)負(fù)責(zé)來(lái)調(diào)用 , 采用Http+Json格式交互 。
2. 解決方案2.1 JAVA平臺(tái)側(cè)2.1.1 項(xiàng)目代碼public static String invokeAlgorithm(String url, HashMap params) throws Exception {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.parseMediaType("application/json; charset=UTF-8"));headers.add("Accept", MediaType.APPLICATION_JSON.toString());HttpEntity<String> httpEntity = new HttpEntity<>(JSONObject.toJSONString(params), headers);RestTemplate rst = new RestTemplate();ResponseEntity<String> stringResponseEntity = rst.postForEntity(url, httpEntity, String.class);return stringResponseEntity.getBody();}2.1.2 代碼解析兩個(gè)入?yún)ⅲ簎rl為Python提供restful調(diào)用方法;params參數(shù) , 項(xiàng)目中參數(shù)使用了map , 然后將map轉(zhuǎn)成了Json , 與Python服務(wù)器約定Json格式傳輸 。
2.2 python平臺(tái)側(cè)經(jīng)過(guò)反復(fù)調(diào)研與深思熟慮的考慮后 , 決定采用flask提供Rest接口 ,  flask 是一款非常流行的python web框架 , 微框架、簡(jiǎn)潔 , 社區(qū)活躍等 。(其實(shí)是因?yàn)榘惭b的Anaconda自帶了flask , 一配置一啟動(dòng)好了 , 就是這么巧)
2.2.1 項(xiàng)目代碼# -*- coding: utf-8 -*-from flask import Flask, request, send_from_directoryfrom k_means import execapp = Flask(__name__)import logging@app.route('/')def index():return "Hello, World!"# k-means算法@app.route('/getKmeansInfoByPost', methods=['POST'])def getKmeansInfoByPost():try:result = exec(request.get_json())except IndexError as e:logging.error(str(e))return 'exception:' + str(e)except KeyError as e:logging.error(str(e))return 'exception:' + str(e)except ValueError as e:logging.error(str(e))return 'exception:' + str(e)except Exception as e:logging.error(str(e))return 'exception:' + str(e)else:return result@app.route("/<path:filename>")def getImages(filename):return send_from_directory(dirpath, filename, as_attachment=True)if __name__ == '__main__':app.run(host="0.0.0.0", port=5000, debug=True)2.2.2 代碼解析代碼為真實(shí)項(xiàng)目示例 , 去掉了一些配置而已 , 示例中包含三個(gè)方法 , 分別說(shuō)一下
(1)最基本Rest接口:helloword# -*- coding: utf-8 -*-from flask import Flaskapp = Flask(__name__)@app.route('/')def index():return "Hello, World!"if __name__ == '__main__':app.run(host="0.0.0.0", port=5000, debug=True)(2)調(diào)用其他python文件的Rest接口# -*- coding: utf-8 -*-from flask import Flask, requestfrom k_means import execapp = Flask(__name__)import logging# k-means算法@app.route('/getKmeansInfoByPost', methods=['POST'])def getKmeansInfoByPost():try:result = exec(request.get_json())except IndexError as e:logging.error(str(e))return 'exception:' + str(e)except KeyError as e:logging.error(str(e))return 'exception:' + str(e)except ValueError as e:logging.error(str(e))return 'exception:' + str(e)except Exception as e:logging.error(str(e))return 'exception:' + str(e)else:return resultif __name__ == '__main__':app.run(host="0.0.0.0", port=5000, debug=True)說(shuō)明:1.接收POST方法;2. 從request獲取java傳過(guò)來(lái)的參數(shù) , 對(duì)應(yīng)上面的java調(diào)用代碼
(3) 文件下載Rest接口# -*- coding: utf-8 -*-from flask import Flask, send_from_directoryapp = Flask(__name__)@app.route("/<path:filename>")def getImages(filename):return send_from_directory(dirpath, filename, as_attachment=True)if __name__ == '__main__':app.run(host="0.0.0.0", port=5000, debug=True)說(shuō)明:1.還是flask框架提供的:send_from_directory
2.dirpath目錄 , 一般可以給個(gè)固定存放目錄 , 調(diào)用的時(shí)候只用給文件名稱就可以直接下載對(duì)應(yīng)文件 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: