如何使用flask将模型部署为服务

1. 加载保存好的模型

为了方便起见,这里我们就使用简单的分词模型,相关代码如下:model.py

import jieba

class JiebaModel:
    def load_model(self):
        self.jieba_model = jieba.lcut

    def generate_result(self, text):
        return self.jieba_model(text, cut_all=False)

说明:在load_model方法中加载保存好的模型,无论是sklearn、tensorflow还是pytorch的都可以在里面完成。在generate_result方法中定义处理输入后得到输出的逻辑,并返回结果。

2. 使用flask起服务

代码如下:test_flask.py

# -*-coding:utf-8-*-
from flask import Flask, request, Response, abort
from flask_cors import CORS
# from ast import literal_eval
import time
import sys
import json
import traceback

from model import JiebaModel

app = Flask(__name__)
CORS(app) # 允许所有路由上所有域使用CORS

@app.route("/", methods=['POST', 'GET'])
def inedx():
    return '分词程序正在运行中'

@app.route("/split_words", methods=['POST', 'GET'])
def get_result():
    if request.method == 'POST':
        text = request.data.decode("utf-8")
    else:
        text = request.args['text']

    try:
        start = time.time()
        print("用户输入",text)
        res = jiebaModel.generate_result(text)
        end = time.time()
        print('分词耗时:', end-start)
        print('分词结果:', res)
        result = {'code':'200','msg':'响应成功','data':res}
    except Exception as e:
        print(e)
        result_error = {'errcode': -1}
        result = json.dumps(result_error, indent=4, ensure_ascii=False)
        # 这里用于捕获更详细的异常信息
        exc_type, exc_value, exc_traceback = sys.exc_info()
        lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
        # 提前退出请求
        abort(Response("Failed!\n" + '\n\r\n'.join('' + line for line in lines)))
    return Response(str(result), mimetype='application/json')

if __name__ == "__main__":
    jiebaModel = JiebaModel()
    jiebaModel.load_model()
    app.run(host='0.0.0.0', port=1314, threaded=False)

说明:我们定义了一个get_result()函数,对应的请求是ip:port/split_words。 首先我们根据请求是get请求还是post请求获取数据,然后使用模型根据输入数据得到输出结果,并返回响应给请求。如果遇到异常,则进行相应的处理后并返回。在__main__中,我们引入了model.py的JiebaModel类,然后加载了模型,并在get_result()中调用。

3. 发送请求并得到结果

代码如下:test_request.py

import requests

def get_split_word_result(text):
    res = requests.post('http://{}:{}/split_words'.format('本机ip', 1314), data=str(text).encode('utf-8'))
    print(res.text)

get_split_word_result("我爱北京天安门")

说明:通过requests发送post请求,请求数据编码成utf-8的格式,最后得到响应,并利用.text得到结果。

4. 效果呈现

(1)运行test_flask.py

(2)运行test_request.py

并在起服务的位置看到:

以上就是如何使用flask将模型部署为服务的详细内容,更多关于用flask将模型部署为服务的资料请关注我们其它相关文章!

(0)

相关推荐

  • flask应用部署到服务器的方法

    flask是我学习的第一个python的web框架,在应用flask写完一个应用后,当然是把它部署到我们的服务器上了. 首先,准备我们部署项目所需要的部分 1.完整的flask项目 2.服务器,或者自己用虚拟机也行,我这里用的是腾讯云,ubuntu16.04 3. nginx,不知道是什么的,自行百度 首先,我们先在服务器上安装nginx,默认已经安装完毕.成功安装nginx的标志就是,浏览器访问该服务器,出现nginx欢迎字样. 1. 把项目打包传输到服务器,成功安装nginx后,会出现/va

  • 在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

    最近在学习Flask,本文介绍一下如何部署Flask开发的应用,同时也学习一下Nginx的使用,这只是在Mac上的一个实验. 应用 这里使用的应用就是官方的文档中给出的Flaskr. 安装Nginx 使用HomeBrew安装Nginx: $ brew install nginx HomeBrew会自动安装Nginx及其依赖的程序.在我的电脑上安装的是Nginx 1.6.2,配置文件的路径是/usr/local/etc/nginx/nginx.conf. 启动Nginx的命令: $ nginx N

  • CentOS 部署 flask项目的方法

    最近在学习 python,使用 flask 实现了个个人博客程序,完了想部署到服务器上.因为是新手,一路磕磕绊绊最终把它基本搞定.网上资料对新手感觉都不太友好,都是零零碎碎的,所以我整理了一下,一方面作为我自己的记录,方便以后查阅,另一方面也希望能帮助到跟我一样的新手. 前提 有一个服务器(不然搞毛),购买可以参考优质国外vps推荐 有个人域名(当然,你可以直接使用 IP访问,但有点奇怪不是?购买域名可以去GoDaddy 1.安装git 可以选择 github 或者Bitbucket,当然你也可

  • 阿里云部署Ubuntu 1.4 Flask + WSGI + Nginx 详解

    抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感觉就很不错,速度那是一个字:快. 自从倒戈向Linux世界后,对于一切大而全的开发框架与软件都有一种不讨喜的感觉,个人更喜欢于使用那些小而精,高性能高产生力的软件和开发框架,So 我现在的第一语言是Python和Coffee,开发框架就当然是 AngularJS (前端) + Flask (后端)

  • Flask和Django框架中自定义模型类的表名、父类相关问题分析

    本文实例分析了Flask和Django框架中自定义模型类的表名.父类相关问题.分享给大家供大家参考,具体如下: 一. Flask和Django中定义表名(执行迁移后生成)的方式和flask是不同的: 1. Django中表名的定义方式,以代码为例说明 class User(AbstractUser): # 继承自认证系统模型类 """用户模型类""" mobile = modles.CharField(max_length=11, mix_len

  • 用uWSGI和Nginx部署Flask项目的方法示例

    概况 在开发过程中,我们一般直接用Python命令直接运行Flask程序.这样的运行只适合我们开发,方便我们调试.一旦程序部署到线上,这样运行的Flask程序性能会比较低.可以采用uWSGI+Nginx进行部署. uWSGI 在部署之前,我们得先了解几个概念 wsgi web应用程序之间的接口.它的作用就像是桥梁,连接在web服务器和web应用框架之间. uwsgi 是一种传输协议,用于定义传输信息的类型. uWSGI 是实现了uwsgi协议WSGI的web服务器. 部署 首先准备一个flask

  • 使用Docker部署Nginx+Flask+Mongo的应用

    Nginx做为服务器,Mongo为数据库支持,Flask为Python语言的Web框架,利用Docker的容器特性,可以简单地部署在linux服务器上 项目准备 项目主要目录如下 __ project-name |__ docker-file |__ ningx |__ Dockerfile |__ conf |__ nginx.conf |__ flask |__ Dockerfile |__ requirements.txt |__ mongo |__ Dockerfile |__ setu

  • 在Docker上部署Python的Flask框架的教程

    本文中,我将尝试展示用Docker开发python应用(主要是Web应用)的可行方法.虽然我本人专注于Python的Flask微框架,但本文目的是演示如何通过Docker更好地开发和共享应用程序,(由任何语言和框架开发的应用程序).Docker通过封装依赖项,大大减少了开发环境和正式产品的差距. 大多数Python开发人员在开发中使用virtualenv.它提供了一种易用的机制让应用程序使用自己专用的依赖项,这些依赖项可能与在其它应用程序或操作系统存在冲突(尤其是不同的Pyhton版本,还有不同

  • 在DigitalOcean的服务器上部署flaskblog应用

    在DigitalOcean上部署了flaskblog,项目虽小,部署中也学到了很多东西. 操作系统选择的是Ubuntu14.04,原因就是平时自己主要使用这个版本,顺手而已,所以你自己可以根据需要选择合适的linux版本. 部署方案: Virtualenv+Gunicorn+Nginx+Supervisor 从这里下载项目的代码flaskblog, 工程中带有简单的配置文件参考. 可以先访问flaskblog看一下. 注意 本文中使用Ubuntu14.04 64位主机, 创建一个名为xin的用户

  • CentOS7部署Flask(Apache、mod_wsgi、Python36、venv)

    一.安装Apache # yum install -y httpd httpd-devel # systemctl start httpd.service # 启动 # systemctl stop httpd.service # 关闭 # systemctl restart httpd.service # 重启 # systemctl enable httpd.service # 开机自启 防火墙开放80端口 # firewall-cmd --zone=public --add-port=80

  • Docker部署Flask应用的实现步骤

    一.目的 本地写好一个Flask应用,用Docker封装,上传至自己的服务器,完成部署. 流程图: 二.实验环境 本地:Windows10 1909 服务器:阿里云Centos系统 三.所需软件 1.DockerDesktop 2.Pycharm 2020.3.3 四.步骤 1.本地完成Flask应用的编写 (1)在PyCharm里新建一个Flask应用docker_flask (2)安装gunicorn,gevent包 (3)新建gunicorn.config.py文件,并填入以下内容 wor

  • Python基于Flask框架配置依赖包信息的项目迁移部署

    一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚拟环境中配置依赖包信息不同.如果重新迁移到一个新的虚拟环境后,又重新来一个一个的配置依赖包,那将会很浪费时间. 下面介绍一个简单易用的技巧,也是我自己在书本上看到的,以防每次配置需要翻阅书籍的麻烦,所以单自写一篇文章作记录,方便自己以后查看,也希望给其他学习的同学有点帮助. 完成项目相关代码编写后,

  • centos 7.0 使用Nginx部署flask应用教程

    参考文章://www.jb51.net/article/130989.htm 修改说明:修改nginx配置部分,更换配置文件内容及路径:从ip访问切换到域名访问 前言 最近博主在开发一个小项目,本机的开发环境是python3.6,因为需要部署到服务器(python2.7)的关系,所以研究了一下,网上大部分的教程是部署在Ubuntu上的,博主使用的是centos7.0,大部分的部署其实都是类似的,这篇博文对完完全全的新手可能会有所帮助,对遇到的一些困惑也可以进行描述. 环境准备 python包安装

随机推荐