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

相关推荐
大鹏说大话2 小时前
从爬虫到决策引擎:大数据下自媒体如何用Python挖掘用户痛点
开发语言·爬虫·python
Niuguangshuo2 小时前
silero-vad:超轻量级开源 VAD 实践指南
开发语言·python
2501_944676163 小时前
揭秘!WORDTIP公司靠不靠谱?小白必看
大数据·人工智能·python
Minner-Scrapy3 小时前
Scrapy 2.17 源码解析:Scheduler 调度器与磁盘/内存双队列
java·爬虫·python·scrapy·网络爬虫·twisted
CODER03043 小时前
Anaconda和Mamba创建环境管理包常用命令合集
python·深度学习·conda·虚拟环境·mamba·常用命令大全
闲猫3 小时前
LangGraph / Capabilities / Fault tolerance
python·agent·langgraph
IvanCodes4 小时前
Python 基础语法(一):变量、数据类型与运算符
python
智购科技自动售卖机厂家4 小时前
2026自动售货机OTA升级系统设计:从全量升级到差分升级的带宽优化工程实践~YH
大数据·人工智能·numpy·pyqt·fastapi
程序员三藏5 小时前
浅谈性能测试
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·性能测试
l1258655 小时前
# RAG向量数据库优化实战:HNSW索引调参与生产级性能设计
数据库·python·mysql·langchain