0

我创建了 django 网站,我在其中使用 celery 服务进行任务调度。

当前的问题是每天 celery 日志文件增加和在 3-4 天内日志文件大小达到 100 mb 大小。

我已经创建了代码,以便 celery 服务应该能够按日期创建日志文件,但第二天 celery 会将日志插入到相同的前一个日期文件中。

def SvcDoRun(self):
        logging.info('Starting {name} service ...'.format(name=self._svc_name_))
        os.chdir(INSTDIR) # so that proj worker can be found
        logging.info('cwd: ' + os.getcwd())
        self.ReportServiceStatus(win32service.SERVICE_RUNNING)
        command = '"{celery_path}" -A {proj_dir} worker --pool=solo -f "{log_path}" -l info'.format(
            celery_path=os.path.join(PYTHONSCRIPTPATH, 'celery.exe'),
            proj_dir=PROJECTDIR,
            log_path=os.path.join(INSTDIR,'celery_'+cur_date+'.log'))
        logging.info('command: ' + command)
        args = shlex.split(command)
        proc = subprocess.Popen(args)
        logging.info('pid: {pid}'.format(pid=proc.pid))
        self.timeout = 3000
        while True:
            rc = win32event.WaitForSingleObject(self.hWaitStop, self.timeout)
            if rc == win32event.WAIT_OBJECT_0:
                # stop signal encountered
                # terminate process 'proc'
                PROCESS_TERMINATE = 1
                handle = win32api.OpenProcess(PROCESS_TERMINATE, False, proc.pid)
                win32api.TerminateProcess(handle, -1)
                win32api.CloseHandle(handle)
                break

请帮助克服上述问题并让我知道是否有人有更好的解决方案来为每个日期创建单独的日志文件。

谢谢。

4

1 回答 1

0

明显的解决方案是每天轮换您的日志,考虑使用logrotate

于 2019-09-18T13:40:43.327 回答