【flask】python使用flask发布http服务对算法服务化封装

这篇具有很好参考价值的文章主要介绍了【flask】python使用flask发布http服务对算法服务化封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

随着应用场景的变化,某些场景中需要调用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.编辑主函数,启动主函数

声明

简单完成了python使用flask进行算法服务化的示例讲解,其它关于Java的技术分享可看主页其它内容,作者本人非专业技术开发人员,如有不对,还望谅解,批评指正,如果觉得有用,希望能留下宝贵的点赞和收藏,谢谢!
Java实现ffmpeg推流支持新版浏览器播放RTMP协议
基于JavaFX的客户端工具示例文章来源地址https://www.toymoban.com/news/detail-852824.html

到了这里,关于【flask】python使用flask发布http服务对算法服务化封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - Docker)

    目录 安装 Docker 安装 PaddleOCR 安装 准备PaddleServing的运行环境, 模型转换 Paddle Serving pipeline部署 重启 测试 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inference 模型推理(离线部署) 百度飞桨(Paddl

    2024年02月07日
    浏览(50)
  • xxl-job服务化

    xxl-job作为服务,之前使用都是每个服务配置信息,采用方法的形式,xxl-job作为服务的话,只需要进行配置 配置信息 xxl-job创建任务 xxl-job相关输入 clientClass 实现类 clientMethod 调用的方法 加参数,比如用户为张三,年龄18 ,\\\"name\\\":\\\"张三\\\",\\\"age\\\":18 JobHandler:CommonXxlJobHandler 任务参数:

    2024年02月06日
    浏览(42)
  • 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS 7)

    目录 Paddle Serving服务化部署实战 准备预测数据和部署环境 环境准备 安装 PaddlePaddle 2.0 安装 PaddleOCR 准备PaddleServing的运行环境, 模型转换 Paddle Serving pipeline部署 确认工作目录下文件结构: 启动服务可运行如下命令: 测试 Python发送服务请求: Postman 发送请求 参数调整 百度飞

    2024年02月07日
    浏览(63)
  • 为什么要将应用微服务化?

    其实在十多年前,“架构师”并不是一个需求很大的职业,一来那时还没有“全民App”级别的应用,除了三大门户网站以外,其他的网上应用业务压力并不大;二来也没有现如今这么丰富的技术选型,几乎清一色的PHP(坊间一直流传着PHP是世界上最好的语言这个说法,我08年左右

    2024年01月18日
    浏览(47)
  • 【架构设计】单体软件向微服务化演变

    假设单体软件的各模块如下,其中服务包含许多功能模块,如用户管理模块、商品模块、订单模块、仓库模块; 服务化是指对单体服务进行拆分,将一个服务软件拆分为多个相互关联的服务,他们之间相互协作,能正常完成原单体服务的所有业务。 服务化后,有如下优点:

    2024年01月17日
    浏览(83)
  • springboot + activiti实现activiti微服务化

    本文介绍如何将springboot+activiti进行整合,并配合eureka,zuul和feign实现activiti的微服务化,将流程控制和业务逻辑分离. 并实现了几个比较特殊的功能,比如时间段委托(某人请假或出差,出差时间内,所有待办交给被委托人处理),比如节点的无限级加签功能(流程本身有不确定性,临时增加

    2024年02月09日
    浏览(39)
  • PaddleOCR 服务化部署(基于PaddleHub Serving)

    最近用到百度飞桨的 PaddleOCR,研究了一下PaddleOCR的服务化部署,简单记录一些部署过程和碰到的问题。 基础环境 paddlepaddle 2.5.2 python 3.7 paddlehub 2.1.0 PaddleOCR 2.6 pip 20 部署过程中也尝试多次,不同版本遇到的问题不尽相同,这里选取其中一组进行部署说明 使用 docker部署 paddl

    2024年03月09日
    浏览(42)
  • 为什么要将应用微服务化

    其实在十多年前,“架构师”并不是一个需求很大的职业,一来那时还没有“全民App”级别的应用,除了三大门户网站以外,其他的网上应用业务压力并不大;二来也没有现如今这么丰富的技术选型,几乎清一色的PHP(坊间一直流传着PHP是世界上最好的语言这个说法,我08年左右

    2024年01月17日
    浏览(48)
  • 分布式、服务化的ERP系统架构设计

    ERP 之痛        曾几何时,我混迹于电商、珠宝行业4年多,为这两个行业开发过两套大型业务系统(ERP)。作为一个ERP系统,系统主要功能模块无非是订单管理、商品管理、生产采购、仓库管理、物流管理、财务管理等等。作为一个管理系统,大家的一般开发习惯就是使用

    2024年02月11日
    浏览(56)
  • 解析UI页面结构树的逆向解析服务化:技术探索与应用

    “限时免费赠送!人工智能测试开发资料大礼包,把握测试行业的新机遇\\\" 解析UI页面结构树的逆向解析服务化是一项具有挑战性和前景广阔的技术,它可以用于多种场景,例如网页内容分析、自动化测试、网页爬虫等。下面是一些技术探索与应用方面的讨论: 技术探索 HTM

    2024年04月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包