BOSS问为什么对FastAPI的请求会有非200,一直抛异常,定位问题ing。
- 在对请求的处理日志中没有找到对应记录,请求没有过来。
- 观察uvicorn的日志,默认没有请求时间,无法比对。
INFO: 127.0.0.1:7225 - "POST /app HTTP/1.1" 200 OK
现在给这个日志加时间:
import asyncio
import importlib.util
import logging
import uvicorn
from fastapi import FastAPI
from starlette.responses import JSONResponse
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.post("/app")
async def check_ticket(data: dict):
return JSONResponse(content={"code":0, "msg": data})
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'default': {
'()': 'uvicorn.logging.DefaultFormatter',
'fmt': '%(levelprefix)s %(message)s',
'use_colors': None,
},
'access': {
'()': 'uvicorn.logging.AccessFormatter',
'fmt': '%(asctime)s - %(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s',
},
},
'handlers': {
'default': {
'formatter': 'default',
'class': 'logging.StreamHandler',
'stream': 'ext://sys.stderr',
},
'access': {
'formatter': 'access',
'class': 'logging.StreamHandler',
'stream': 'ext://sys.stdout',
},
},
'loggers': {
'uvicorn': {
'handlers': [
'default',
],
'level': 'INFO',
},
'uvicorn.error': {
'level': 'INFO',
},
'uvicorn.access': {
'handlers': [
'access',
],
'level': 'INFO',
'propagate': False,
},
},
}
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
uvicorn.run(app, host="127.0.0.1", port=8888,log_config=LOGGING_CONFIG)
遂断定与FastAPI返回无关,网络层问题。
标签:INFO,logging,自定义,app,uvicorn,access,import,日志 From: https://www.cnblogs.com/thx2199/p/17535285.html