0%

python服务端-faskapi

自动摘要: 1.源码打包: >python将源码打包成whl,用户可以直接用pipinstallxxx.whl加载。 ```python fromsetuptoolsimportset ……..

1. 源码打包:

python将源码打包成whl, 用户可以直接用pip install xxx.whl 加载。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from setuptools import setup, find_packages
# python setup.py check
# python setup.py sdist bdist_wheel
# python setup.py bdist_wheel
setup(
name='TeethSegSerrve', # 应用名
version='1.0.0', # 版本号
packages=["src"],
#py_modules=["src/infer.py","src/MeshToJson.py","src/OptimizedProcessing.py","src/PreProcessing.py"],
#packages=find_packages(), # 包含所有src中的包
#package_dir={'': 'src'}, # 告诉distutils包都在src下

# 打包时需要打包的数据文件,如图片,配置文件等
# package_data={
# # 任何包中含有.txt文件,都包含它
# '': ['*.py'],
# },
# 项目依赖的 Python 库,使用 pip 安装本项目时会自动检查和安装依赖
install_requires=['numpy', 'trimesh', 'open3d', 'pygco', 'onnxruntime-gpu', 'scipy',"flask"],
# 指定项目依赖的 Python 版本。
python_requires='>=3.7',
# 是否使用静态文件,为true时静态文件生效,否则不起作用
include_package_data=True,
# 此项需要,否则卸载时报windows error
zip_safe=False,
setup_cfg=True
# 其他信息暂时没加,后面会加附录进行说明
)

然后执行

1
python setup.py  bdist_wheel

即可生成对应whl文件

2. flask建立

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import os
from flask import Flask,request,make_response,send_from_directory
from src.PreProcessing import prepare_function
from src.OptimizedProcessing import optimized_processing
from src.infer import infer
from src.MeshToJson import MeshToJson
app = Flask(__name__)

###############全局变量########################
app.config['UPLOAD_FOLDER'] = "data/"
model_upper_path = "models/model_upper.onnx"
model_lower_path = "models/model_lower.onnx"
devices = 'CUDAExecutionProvider'
UPLOAD_FOLDER ="data/"
###############全局变量########################

@app.route('/Seg/', methods=['GET', 'POST'])
def MeshSeg():
if 'file' not in request.files:
return "Please upload the file"
file = request.files['file']
if not file:
return "The file is empty"
save_path=os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
file.save(save_path)

####################开始分牙处理############################################
prepare_args = prepare_function(save_path)
output_u = infer(prepare_args, model_upper_path, devices)
output_l = infer(prepare_args, model_lower_path, devices)
data = optimized_processing(output_l, output_u, prepare_args)
MeshToJson(data, out_path="data/out.json")
####################结束分牙处理############################################


response = make_response(send_from_directory(path = "data/out.json",directory="./data/", filename ="out.json", as_attachment=True))
return response



if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True, port=9999)

注意:

  1. 因为打包目录为src,所以导入包为src.xxx
  2. 用户上传模型进行判断是否为空,然后保存模型。
  3. 然后开始处理
  4. 最后将结果制作成json进行返回

欢迎关注我的其它发布渠道