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

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

我使用fastapi写了一个接口服务,服务内有路由api,也有定时任务,定时任务使用的是@repeat_task修饰器实现的,具体代码可以见

https://github.com/yuval9313/fastapi-restful/blob/master/fastapi_restful/tasks.py

我在使用的过程中遇到了一个问题,日志写入错乱,我需要将日志按照路由的名称\定时任务名称分别写入不同的文件,所以我封装了一个loguru

import sys

from 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

回到顶部