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

环境: python3.10.x Linux/centos

背景: 最近在用FastApi开发数据统计,并将统计数据返回给前端展示的数据系统。

数据库: mongodb, python包为mongoEngine

项目结构

haskell 复制代码
main.py
api
middleware
router
  -- __init__.py
  -- route.py
service
model
config

说明:

api: 接口的参数

model: 为数据库表映射对象

middleware: 中间件

router: 路由配置

service: 服务内容

config: 数据库等基础配置

其中 main.py 代码:

haskell 复制代码
from fastapi import FastAPI, APIRouter
import uvicorn

import 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 代码:

haskell 复制代码
from fastapi import FastAPI, APIRouter
from api import filter
from model import  response_model

routers = 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,配置为多个进程运行。

备注:

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

haskell 复制代码
kill -TERM    ppid

ppid: 父进程的进程id

相关推荐
Boxsc_midnight1 天前
【规范驱动的开发方式】之【spec-kit】 的安装入门指南
人工智能·python·深度学习·软件工程·设计规范
条件漫步1 天前
Miniconda config channels的查看、删除、添加
python
爱笑的眼睛111 天前
深入解析PyTorch nn模块:超越基础模型构建的高级技巧与实践
java·人工智能·python·ai
2401_841495641 天前
【自然语言处理】自然语言理解:从技术基础到多元应用的全景探索
人工智能·python·自然语言处理·语音助手·翻译工具·自然语言理解·企业服务
嫂子的姐夫1 天前
004-MD5_易车网
爬虫·python·逆向·加密
gf13211111 天前
python_基于主视频删减片段并插入镜头视频
linux·python·音视频
八年。。1 天前
Python 版本确认方法
开发语言·笔记·python
询问QQ688238861 天前
多策略增强型的改进蛇优化算法在Matlab中的实现与探讨
fastapi
裤裤兔1 天前
Python打印输出换行
开发语言·python
Batac_蝠猫1 天前
Mac 真人手势识别切水果游戏
python·opencv·计算机视觉