fastapi日志重复打印_【FastAPI 】踩坑总结

本文总结了在使用FastAPI时遇到的问题,包括部署(如Docker、k8s)、日志配置(避免重复打印)、中间件实现及配置文件管理。详细介绍了日志配置文件的编写和读取,以及如何通过配置文件管理数据库连接和应用设置。同时,提到了中间件的编写和使用,以及在使用过程中遇到的错误与解决方案。
摘要由CSDN通过智能技术生成

【FastAPI 】踩坑总结

阅读目录

一、部署之殇

二、日志之殇

三、中间件之殇

四、配置文件之殇

五、其它

一、部署之殇

1 linux后台启动

nohup uvicorn main:app --host 0.0.0.0 --port 8080

2 Docker部署

FROM python:3.7

RUN pip install fastapi uvicorn

EXPOSE 80

COPY ./app /app

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]

2.1 Docker + gunicorn

gunicorn配置文件

#!usr/bin/env python

# encoding: utf-8

import multiprocessing

# 监听端口

bind = '0.0.0.0:8899'

# 工作模式

worker_class = 'uvicorn.workers.UvicornWorker'

# 并行工作进程数

workers = multiprocessing.cpu_count() * 2 + 1

# 设置守护进程

#daemon = True

# 配置文件方式配置日志

logconfig = "./logger.ini"

Dockerfile

FROM python:3.7

ENV TZ Asia/Shanghai

#将项目代码放入镜像

COPY . /app

WORKDIR /app

#安装第三方模块,更新数据库

RUN pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com \

&& rm -rf configure

ENTRYPOINT ["gunicorn", "-c", "gunicorn.conf.py", "main:app"]

3 k8s部署

3.1 service.yaml

apiVersion: v1

kind: Service

metadata:

name: project_name # 项目名称

spec:

ports:

- name: http

port: 80

targetPort: 8899

type: ClusterIP

3.2 deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: project_name # 项目名称

spec:

template:

spec:

imagePullSecrets:

- name: registry-pull-secret

contain

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值