使用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环境学