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

相关推荐
wxin_VXbishe21 分钟前
springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290
java·spring boot·python·spring·servlet·django·php
ITenderL27 分钟前
Python学习笔记-函数
python·学习笔记
zmjia11129 分钟前
全流程Python编程、机器学习与深度学习实践技术应用
python·深度学习·机器学习
_.Switch1 小时前
Python机器学习:自然语言处理、计算机视觉与强化学习
python·机器学习·计算机视觉·自然语言处理·架构·tensorflow·scikit-learn
JUNAI_Strive_ving1 小时前
番茄小说逆向爬取
javascript·python
彤银浦1 小时前
python学习记录7
python·学习
简单.is.good2 小时前
【测试】接口测试与接口自动化
开发语言·python
Envyᥫᩣ2 小时前
Python中的自然语言处理:从基础到高级
python·自然语言处理·easyui
哪 吒2 小时前
华为OD机试 - 几何平均值最大子数(Python/JS/C/C++ 2024 E卷 200分)
javascript·python·华为od
我是陈泽2 小时前
一行 Python 代码能实现什么丧心病狂的功能?圣诞树源代码
开发语言·python·程序员·编程·python教程·python学习·python教学