目前看,使用tiangolo/uvicorn-gunicorn-docker镜像搭建的服务端,配置文件gunicorn.conf中的threads和worker_class 配置根本不会生效,其它还有access_log_format等。见https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker 这里面的gunicorn配置介绍,都没有这些选项。如何调整tiangolo/uvicorn-gunicorn-docker镜像搭建的服务端的日志输出,即gunicorn_access.log中的日志问题,如在开始添加时间值。本文地址:http://api.04007.cn/article/1240.html,未经许可,不得转载.
本文地址:http://api.04007.cn/article/1240.html,未经许可,不得转载.
# gunicorn_access.log中以下三项配置均不生效 threads = 1 worker_class = 'sync' access_log_format='%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'
虽然配置的是worker_class为sync, 但实际tiangolo/uvicorn-gunicorn-docker 使用的是 WORKER_CLASS,By default, set to uvicorn.workers.UvicornWorker。可以修改,但只能见官网上的这类值,uvicorn.workers.UvicornH11Worker 改成其它值会遇到报错。在程序运行中也能发现其使用了多线程,并且会并发,而不是sync的模式。本文地址:http://api.04007.cn/article/1240.html,未经许可,不得转载.
关于access_log_format,http://www.manongjc.com/detail/62-cgwxtbygpzhlmuq.html 为 FastAPI 配置日志的三种方法,其中尝试在main.py或者async def startup_event()方法中采用以下代码。本文地址:http://api.04007.cn/article/1240.html,未经许可,不得转载.
本文地址:http://api.04007.cn/article/1240.html,未经许可,不得转载.
import logging #将日志输出至屏幕 logger = logging.getLogger() logger.setLevel(logging.INFO) ch = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(module)s - %(funcName)s - line:%(lineno)d - %(levelname)s - %(message)s" ) ch.setFormatter(formatter) logger.addHandler(ch) 但在main.py中未生效,在__init__.py里startup方法中添加会导致重复输出日志,最后使用在main.py中添加了 LOG_CONFIG = { "version": 1, "disable_existing_loggers": True, 。。。 "formatters": { "default": { "format": "%(asctime)s [%(process)s] [%(thread)d] %(levelname)s: %(message)s" } } logging.config.dictConfig(LOG_CONFIG) logger = logging.getLogger(__name__) app = create_app()本文地址:http://api.04007.cn/article/1240.html,未经许可,不得转载.
本文地址:http://api.04007.cn/article/1240.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |