美文网首页
一种利用web服务实现模型常驻内存的简单方法

一种利用web服务实现模型常驻内存的简单方法

作者: IrvingBei | 来源:发表于2018-10-02 21:42 被阅读0次

利用python的web服务快速实现模型常驻内存,本方法很low,但是真的很快速,半个小时都能实现。


1、背景

前段时间有这样一个需求,通过php接收微信服务器发送来的消息,然后把消息发送给python功能逻辑处理程序。在前期是直接使用php调用python程序,python程序进行模型加载,消息处理,然后返回给php。利用这种流程,处理过程不慢都难。但是还必须得按照这样的流程走,于是想想能不能将之前训练好的模型常驻内存。查阅网上,解决方法有很多,可以利用socket通信、做成客户/服务器模式等,这些方法都非常好,但是实现起来有一定的复杂。所以想到了这种方法。

2、整体思路

主要是用python以及其flask库来实现的。主要思路有以下几点:

  • 将php调用python程序改为php通过get或post方法向python发送请求;
  • python程序改成web服务模式,运行的就加载模型,让它一直运行;
  • python接收请求,处理,并返回结果;

Flask是一个使用 Python 编写的轻量级 Web 应用框架,使用时,只需要在python中引入即可,因为需要处理get或者post请求,同时引入request,接下来就按照流程来编写代码即可。主要步骤如下:
(1)flask的简单实验

  • 引入包创建一个flask应用
from flask import Flask,request
app = Flask(__name__)
  • 定义一个方法
def hello():
        print("hello world")
  • 运行应用
app.debug = True
app.run()

完整代码:

from flask import Flask,request
app = Flask(__name__)

# 加载模型

# 处理请求
@app.route('/hello')
def hello():
    return("hello world")

if __name__ == '__main__':
    app.debug = True
    app.run()

此时运行该程序,在浏览器地址栏输入:127.0.0.1:5000/hello,此时浏览器中就会显示hello world,好了,那么接下来的事情就简单了。只需要把上面加载模型和处理请求部分的代码稍作修改就可以了。

  • 加载模型
model= load_model_to_memory()  # 原来加载模型的那些代码
  • 接收请求并处理
# 处理请求
@app.route('/deal', methods=['GET'])
def deal():
        # 获取php发来的消息
        question = request.args.get('question',"default question")   # 键值 默认值
        # 对消息进行解码
        question=urllib.parse.unquote(question)
        result = main_function(model)  # 该函数就是原来的主要功能逻辑处理函数
        # 返回处理结果
        return (urllib.parse.quote(result))

(2)php与python之间通信
上面的程序一直运行着,这样,可以通过url地址向python程序发送请求。在php中构造get或者post请求的方法可以见

相关文章

  • 一种利用web服务实现模型常驻内存的简单方法

    利用python的web服务快速实现模型常驻内存,本方法很low,但是真的很快速,半个小时都能实现。 1、背景 前...

  • spring-boot & ffmpeg 搭建一个音频转

    利用FFMPEG实现一个音频转码服务 提供一个音频转码服务,主要是利用ffmpeg实现转码,利用java web对...

  • 5.配置选型

    5.3.2服务器CPU/内存配置模型 2.CPU与内存资源比:1:2特别适合WEB服务/应用类,这些应用都对CPU...

  • Django 学习笔记-1 socket 和 WSGI

    1. 用 socket 实现一个简单的 Web 服务器 2. 用 wsgiref 实现一个简单的 Web 服务器 ...

  • Java内存模型

    java内存模型的概念 jvm定义一种内存模型来屏蔽各种硬件和操作系统内存模型的差异,以实现java的跨平...

  • 32-高性能WEB服务NGINX(一)

    本章内容◆ I/O模型◆ nginx介绍◆ nginx安装◆ nginx各种模块实现web服务◆ nginx实现f...

  • SpringMVC快速入门详解

    简介 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架。具有如下优点: 使用简单,开发便捷(相...

  • Python web框架开发 - WSGI协议

    仅供学习,转载请注明出处 前情介绍 前面我利用TCP协议,返回HTTP数据的方法,实现了web静态页面返回的服务端...

  • 1:基本的服务

    什么是服务? 通常我们将常驻于内存等待用户请求或者定时执行任务的程序称作服务。linux系统下有的服务程序,一种是...

  • Restful API简介

    REST是一种架构风格,Restful指的是基于REST实现的Web服务。它基于HTTP,通过标准的HTTP方法(...

网友评论

      本文标题:一种利用web服务实现模型常驻内存的简单方法

      本文链接:https://www.haomeiwen.com/subject/ccwteftx.html