关于fastapi repeat_task定时任务修饰器与路由混搭使用日志写入错乱的问题?

我使用fastapi写了一个接口服务,服务内有路由api,也有定时任务,定时任务使用的是@repeat_task修饰器实现的,具体代码可以见
https://github.com/yuval9313/fastapi-restful/blob/master/fastapi_restful/tasks.py我在使用的过程中遇到了一个问题,日志写入错乱,我需要将日志按照路由的名称\定时任务名称分别写入不同的文件,所以我封装了一个loguru
import sysfrom loguru import logger
import os
import datetime
class Logger_task:
    def __init__(self, Log_dir):
        self.logger = logger
        # 清空所有设置
        self.logger.remove()
        self.Log_dir=os.path.dirname(os.path.abspath(__file__)) + '\\..\\logs\\{}\\'.format(Log_dir)
        self.logger.add(sys.stdout,
                        format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
                               "<level>{level}</level>: " 
                               "<level>{message}</level>", 
                        )
        file_name = '{}.log'.format(datetime.date.today())
        global_log_file = os.path.join(self.Log_dir, file_name)
        self.logger.add(global_log_file, level='DEBUG',
                        format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
                               "<level>{level}</level>: " 
                               "<level>{message}</level>",  
                        rotation="10 MB")
    def get_task_logger(self):
        return self.logger
定时任务\路由内调用
#定时任务调用@router.on_event('startup')
@repeat_task(seconds=60, wait_first=True) #一分钟推送一次
def repeat_task_push_FKD():
    from Toollib.logger import Logger
    logger_class = Logger(Log_dir='repeat_task_push_FKD')
    task_logger=logger_class.get_task_logger()
    task_logger.info("推送定时任务-开始")
    push_FKD_class = push_FKD(logger=task_logger)
    push_FKD_class.push_bill()
    task_logger.info("推送定时任务-结束")
#路由api调用
class GetFile(BaseModel):
    file_code: str
    asr_code: str
    file_format: str
    file_name: str  
@router.post("/GetFile")
def GetFile(item: GetFile):
    from Toollib.logger import Logger
    logger_class = Logger(Log_dir='GetFile')
    logger=logger_class.get_logger()
    get_GetFile={"file_code":str(item.file_code),'asr_code':str(item.asr_code),'file_format':str(item.file_format),'file_name':str(item.file_name)}
    logger.info("附件下载-收到获取文件参数:{}".format(str(get_GetFile)))
    Get_File_class = Get_File(file_code=str(item.file_code),asr_code=str(item.asr_code),file_format=str(item.file_format),file_name=str(item.file_name),logger=logger)
    Get_File_bases64 = Get_File_class.Get_bases_64()
    #logger.remove()
    if 'GetResult' in str(Get_File_bases64):
        return respSuccessJson(data=Get_File_bases64['GetResult'], msg='获取成功')
    else:
        return Get_File_bases64
如上调用,当我的repeat_task_push_FKD()定时任务推送的时候,同时对方会调用我的路由/GetFile获取附件。此时定时任务repeat_task_push_FKD()内的后一半的日志会被写入到GetFile的日志文件内,这个是什么问题导致的?我应该怎么修改让它乖乖按照我设定的日志文件写入?
`
以上是 关于fastapi repeat_task定时任务修饰器与路由混搭使用日志写入错乱的问题? 的全部内容, 来源链接: utcz.com/p/939050.html








