当前位置:首页 > 编程笔记 > 正文
已解决

fastapi项目结构以及多进程部署

来自网友在路上 177877提问 提问时间:2023-10-23 02:49:27阅读次数: 77

最佳答案 问答题库778位专家为你答疑解惑

环境: python3.10.x Linux/centos
背景: 最近在用FastApi开发数据统计,并将统计数据返回给前端展示的数据系统。
数据库: mongodb, python包为mongoEngine

项目结构

main.py
api
middleware
router-- __init__.py-- route.py
service
model
config

说明:
api: 接口的参数
model: 为数据库表映射对象
middleware: 中间件
router: 路由配置
service: 服务内容
config: 数据库等基础配置

其中 main.py 代码:

from fastapi import FastAPI, APIRouter
import uvicornimport multiprocessing
cpus = multiprocessing.cpu_count()from router import route
app = FastAPI()app.include_router(route.routers)#uvicorn.run(app, host="0.0.0.0", port=8010) # 可用于开发时部署
if __name__ == "__main__":uvicorn.run(app="main:app", host="0.0.0.0", port=8010, workers= min(cpus,2))

route.py 代码:


from fastapi import FastAPI, APIRouter
from api import filter
from model import  response_modelrouters = APIRouter(prefix="/v1")routers.add_api_route(path="/filter", endpoint=filter.filter_api, methods=["POST"],response_model=response_model.FilterResponseModel ,tags=["Home-filter"])

部署

在实际部署中,如以上main.py中所示, 采用 uvicorn.run, 并设置worker大于1,配置为多个进程运行。

备注:

1、关闭父进程以及相关子进程的方法:

kill -TERM    ppid

ppid: 父进程的进程id

2、杀死批量进程

kill -9 $(ps -ef | pgrep chrome)

3、修改机器hostname

hostnamectl set-hostname aliyun-1

aliyun-1: 新的hostname
以上修改不用重启机器, 修改立即生效

4、获取当前文件所在的目录

dirname $0:获取当前脚本所在的绝对目录
cd $(dirname $0):进入这个目录
pwd:显示切换后脚本所在工作目录
结合起来,在脚本中使用下面的语句,就可以得到脚本的绝对路径。cwd=$(cd $(dirname $0);pwd)
cd $cwd
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"fastapi项目结构以及多进程部署":http://eshow365.cn/6-22112-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!