【发布时间】:2021-03-29 01:47:26
【问题描述】:
我有一个 celery 应用程序,它执行并发 = 1 的任务。我使用以下代码添加了日志,它工作正常,但是当它尝试旋转日志时,我遇到了异常,
下面是我的代码,
app = Celery('src.tasks',
broker='amqp://user:pass@server:5672//',
)
app.config_from_object('src.settings')
# Optional configuration, see the application user guide.
app.conf.update(
CELERY_ACKS_LATE=True,
CELERY_PREFETCH_MULTIPLIER=1,
CELERYBEAT_MAX_LOOP_INTERVAL=600,
CELERY_ROUTES={'myqueue': {'queue': 'myqueue'}},
CELERY_TASK_SERIALIZER='pickle',
CELERY_RESULT_SERIALIZER='pickle',
CELERY_ACCEPT_CONTENT=['pickle', 'json'],
result_expires=3600,
)
LOGGER = app.conf.LOGGER
我的设置是,
LOG_FILENAME="log.log"
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
handler = logging.handlers.TimedRotatingFileHandler(LOG_FILENAME,
maxBytes=100,
backupCount=5,
)
formatter = logging.Formatter(LOG_FORMAT)
handler.setFormatter(formatter)
LOGGER.addHandler(handler)
我正在执行如下代码
>> celery -A src.tasks worker -E -Q AWS_jobclassification --concurrency=1
错误
[2020-12-18 06:40:01,305: WARNING/Worker-1] File "d:\install\miniconda\envs\py27\lib\logging\handlers.py", line 350, in doRollover
[2020-12-18 06:40:01,305: WARNING/Worker-1] os.rename(self.baseFilename, dfn)
[2020-12-18 06:40:01,305: WARNING/Worker-1] WindowsError: [Error 32] The process cannot access the file because it is being used by another process
[2020-12-18 06:40:01,305: WARNING/Worker-1] Logged from file tasks.py, line 183
我的代码有什么问题?以及如何在芹菜任务中使用日志轮换?谢谢。
我正在使用 Windows 服务器
【问题讨论】:
-
我建议你直接使用logrotate——我就是这么做的。