使用Flask开发算法接口--POST请求接口

使用flask封装算法

from flask import Flask, jsonify, request

app = Flask(__name__)
app.config["JSON_AS_ASCII"] = False  # jsonify返回的中文正常显示

@app.route("/register", methods=['POST'])
def user_register():
    username = request.args.get("username").strip()  # 用户名
    password = request.args.get("password").strip()  # 密码
    if username and password:
        if username != "admin":
            return jsonify({"code": 2002, "msg": "用户无权限!!!"})
        if password != "123456":
            return jsonify({"code": 2002, "msg": "密码错误!!!"})

    else:
        return jsonify({"code": 2001, "msg": "用户名/密码不能为空,请检查!!!"})



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

在postman中测试一下:

注意:

status 描述
200 接口调用成功
400 参数异常
401 权限异常
404 url不存在
412 身份验证异常
500 接口校验或处理异常

request.args.get(key) 是一个有用的字典函数,如果参数未设置,它将返回 None 而不是引发 KeyError
可使用
LR = request.args.get("lr") or args.lr

将Flask应用封装成Docker服务

使用 gunicorn+gevent 启动flask服务

首先安装包:
pip install gunicorn gevent
新建一个gunicorn.conf.py文件:

workers = 5    # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent"   # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "0.0.0.0:3000" # 设置端口,这里注意要设置成0.0.0.0,如果设置为127.0.0.1的话就只能本地访问服务了

通过gunicorn启动flask服务了:
$ gunicorn gcn:app -c gunicorn.conf.py
报错:

解决办法:
args = parser.parse_args()替换为args,unknown = parser.parse_known_args()

Dockerfile的编写

$ sudo vim Dockerfile

Dockerfile中:

# 基于的基础镜像
FROM ogb:v.0.1 
# /app 是要部署到服务器上的路径
WORKDIR /app
# Docker 避免每次更新代码后都重新安装依赖,先将依赖文件拷贝到项目中
COPY requirements.txt requirements.txt
# 执行指令,安装依赖
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# COPY指令和ADD指令功能和使用方式类似。只是COPY指令不会做自动解压工作。
# 拷贝项目文件和代码
COPY . .
# 执行指令,字符串间是以空格间隔
CMD ["gunicorn", "gcn:app", "-c", "./gunicorn.conf.py"]

requirements.txt中:

文件:

创建docker镜像

使用命令:
docker build -t 'gcn' .

启动镜像

docker run -it gcn /bin/bash

docker run -it -p 5000:8888 gcn /bin/bash
5000:8888 :表示将容器的 8888端口映射到宿主机的5000端口,这样就可以通过宿主机19x.xxx.xxx.xx:5000访问容器了

导出镜像

docker save docker.io/gcn >/gcn.tar.gz

导入镜像

docker load < gcn.tar.gz

删除镜像

docker rmi -f imageID

从Postman发送请求

curl --location --request POST 'http://192.168.xx.xx:5000/gat?username=admin&password=admin'

参考资料:
使用Flask开发简单接口(2)--POST请求接口
Python flask框架post接口调用示例
【flask+gunicorn+docker】创建简单flask项目并部署到docker容器中
手把手教你将Flask应用封装成Docker服务的实现
docker常用命令总结——安装、镜像、容器基本操作
安装docker及在docker中安装python环境学

posted @ 2022-09-15 10:51  YTT77  阅读(1443)  评论(0编辑  收藏  举报