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

相关推荐
钟爱蛋炒饭3 分钟前
基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统
python·神经网络·机器学习
eqwaak04 分钟前
Python Pillow库详解:图像处理的瑞士军刀
开发语言·图像处理·python·语言模型·pillow
RE-190114 分钟前
制冷剂中表压对应温度值的获取(Selenium)
爬虫·python·selenium·jupyter·pandas·danfoss·reftools
测试老哥20 分钟前
Python+selenium自动化生成测试报告
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
IT北辰1 小时前
Linux 系统python环境( Miniconda),最新版
linux·运维·python
keerduoba1 小时前
PDFParser 的pickle.loads 寻找链(源码)wmctf2025-pdf2text
python·pdf·pickle·pdf与pickle反序列化
该用户已不存在2 小时前
PHP、Python、Node.js,谁能称霸2025?
python·node.js·php
luckys.one2 小时前
第12篇|[特殊字符] Freqtrade 交易所接入全解:API、WebSocket、限频配置详解
网络·ide·python·websocket·网络协议·flask·流量运营
Pocker_Spades_A2 小时前
Python快速入门专业版(四十六):Python类的方法:实例方法、类方法、静态方法与魔术方法
开发语言·python
cRack_cLick3 小时前
pandas库学习02——基本数据清洗
python·pandas