from flask import jsonify, abort
controller = UserController()
record = controller.find(name)
if record is None:
abort(404)
else:
resp = jsonify(record.toJSON())
resp.status_code = 200
return resp
waitress
服务:-
from waitress import serve
-
serve(app, host="0.0.0.0", port=8080)
在上面的片段中,应用程序在本地主机的 8080 端口上提供服务 。最终代码如下所示:
-
from flask import Flask, jsonify, abort
-
from waitress import serve
-
app = Flask(__name__)
-
@app.route('/user/')
-
def get(name):
-
controller = UserController()
-
record = controller.find(name)
-
if record is None:
-
abort(404)
-
else:
-
resp = jsonify(record.toJSON())
-
resp.status_code = 200
-
return resp
-
serve(app, host="0.0.0.0", port=8080)
部署
FindService
的代码已经准备完毕 。除了 REST API 之外,它还有域模型、数据层和应用程序层 。下一步是构建此服务,将其容器化,然后部署到 Kubernetes 上 。此过程与部署其他服务妹有任何区别,但有一些 Python 特有的步骤 。在继续前进之前,让我们来看下文件夹和文件结构:
-
+ ums-find-service
-
+ ums
-
- domain.py
-
- data.py
-
- app.py
-
- Dockerfile
-
- requirements.txt
-
- kube-find-deployment.yml
ums-find-service
下,它包含了ums
文件夹中的代码和一些配置文件,例如Dockerfile
、requirements.txt
和kube-find-deployment.yml
。domain.py
包含域模型,data.py
包含UserRepositoryImpl
,app.py
包含剩余代码 。我们已经阅读过代码了,现在我们来看看配置文件 。第一个是
requirements.txt
,它声明了 Python 系统需要下载和安装的外部依赖项 。我们需要用查找服务中用到的每个外部 Python 模块来填充它 。如你所见,我们使用了 MySQL 连接器、Flask 和 Waitress 模块 。因此,下面是requirements.txt
的内容 。-
Flask==2.1.1
-
Flask_RESTful
-
mysql-connector-python
-
waitress
Dockerfile
中声明 Docker 相关的清单,如下:-
FROM python:3.8-slim-buster
-
WORKDIR /ums
-
ADD ums /ums
-
ADD requirements.txt requirements.txt
-
RUN pip3 install -r requirements.txt
-
EXPOSE 8080
-
ENTRYPOINT ["python"]
-
CMD ["/ums/app.py"]
总的来说,我们使用 Python 3.8 作为基线,除了移动
requirements.txt
之外,我们还将代码从ums
文件夹移动到 Docker 容器中对应的文件夹中 。然后,我们指示容器运行pip3 install
命令安装对应模块 。最后,我们向外暴露 8080 端口(因为 waitress 运行在此端口上) 。
推荐阅读
- Adobe的人工智能原型可将物体粘贴到照片上 同时添加逼真的照明和阴影
- 适合在家里养的小宠物有哪些,有什么适合家里养的小动物-
- 谢芳|妻子刚生下女儿,就对丈夫说:先给我10万,然后再买一个房子写上我的名字
- 麻将桌上老赢钱的人有什么特点?
- 扑克争上游基本玩法
- 葫芦在家居风水里有什么作用?该放在什么位置?
- 30年前的一分钱现在值多少钱?有没有收藏价值?
- 郭碧婷和向佐在一起多久结婚,郭碧婷向佐结婚了吗-
- 百慕大三角有人吗,百慕大三角存不存在-
- 项羽在什么战役中失败,项羽在楚汉之争中最终失败的原因是什么-