提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
随着应用场景的变化,某些场景中需要调用python的算法对B/S或C/S结构的项目进行支撑,为了将算法服务化,可以使用flask框架对算法进行服务发布,避免不同系统调用算法时进行多次算法的部署以及代码调用,尤其是像Java做的BS结构的系统,调用python算法,光部署环境就需要消耗大量精力,即使打成exe包,也需要每个服务部署的计算机有一个算法能在服务器上调用,为了解决算法的通用性,可以使用flask框架对算法进行服务化,并打成exe包,既能避免繁琐的python环境搭建实现快速部署,又能解决需要多次部署算法的情况,需要算法的业务模块只需要通过http对算法服务进行调用即可,无需多次部署调用本地文件的方式进行算法调用。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Flask是什么?
Flask是一个轻量级的Python Web框架。它是一个微型框架,具有灵活性和可扩展性。Flask使用Python语言编写,它是一个开源框架,使得它可以自由地使用和修改。Flask框架可以用于构建任何类型的Web应用程序,包括单页面应用程序、企业应用程序、博客、社交媒体应用程序等等。
二、服务化实例
1.下载flask库
在控制台或powershell中输入命令,虚拟环境则需要先进入虚拟环境
pip install flask
需要指定版本则使用如下命令:
pip install flask==版本号
2.引入flask
在python脚本文件中对下载的flask库进行导入引用,具体实现如下:
from flask import Flask, request
3.代码示例
此处只对核心内容进行展示,具体算法实现不做展示,代码如下:
from gevent.pywsgi import WSGIServer
import socket
from flask import Flask, request
import json
//引入readXml函数
from utils.xmlUtils import readXml
monkey.patch_all()
app = Flask(__name__)
# 请求返回实体
class resultResponse:
def __init__(
self,
code,
success,
msg, data):
self.code = code
self.success = success
self.msg = msg
self.data = data
//设置接口名和请求方式
@app.route('/addmx', methods=['GET', 'POST'])
def addmx():
//设置接口参数,获取接口参数值
get_data = request.values
//获取参数zhName的值,设置值的类型为字符串类型,括号中type=str表示类型为string,其它参数依次往下加就行
//比如aa = get_data.get("aa", type=int)
//bb=get_data.get("bb", type=str)
zhName = get_data.get("zhName", type=str)
//文件类型的参数设置及接收
file = request.files['file']
//调用readXml函数,传入参数,此处的readXml函数是其他脚本文件的函数,需要引用,具体引用在头部
result=readXml(zhName,file)
//返回请求实体
return json.dumps(
resultResponse(0, True, "result callback success", result),
default=lambda obj: obj.__dict__,
sort_keys=True,
ensure_ascii=False,
indent=4)
# 服务启动主函数
if __name__ == '__main__':
freeze_support()#解决多进程重复启动问题
//这个不是必须的!!!
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
localhostIp = s.getsockname()[0]
print("===============>>>算法服务启动成功,服务地址=========>" + str(localhostIp) + ":" + str(SERVER_PORT) + "<<<==================")
//这里是主要的内容
WSGIServer(('0.0.0.0', SERVER_PORT), app).serve_forever()
主要内容,导入flask库,然后使用@app.route对接口名和请求方式进行定义和声明,定义函数,在函数中通过request.values设置参数和获取参数,获取到参数后调用算法入口函数进行计算,将计算结果进行返回放入返回的实体中
总结
本文主要针对算法服务的封装进行描述,解决命令行调用本地脚本或exe的弊端,满足服务化的需求,主要步骤:
1.下载flask框架依赖库
2.创建脚本,引入flask
3.创建函数,配置@app.route
4.通过request.values获取和设置接口参数
5.编辑主函数,启动主函数文章来源:https://www.toymoban.com/news/detail-852824.html
声明
简单完成了python使用flask进行算法服务化的示例讲解,其它关于Java的技术分享可看主页其它内容,作者本人非专业技术开发人员,如有不对,还望谅解,批评指正,如果觉得有用,希望能留下宝贵的点赞和收藏,谢谢!
Java实现ffmpeg推流支持新版浏览器播放RTMP协议
基于JavaFX的客户端工具示例文章来源地址https://www.toymoban.com/news/detail-852824.html
到了这里,关于【flask】python使用flask发布http服务对算法服务化封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!