首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么RQ在logging.config.dictConfg之后不引发异常?

为什么RQ在logging.config.dictConfg之后不引发异常?
EN

Stack Overflow用户
提问于 2019-03-02 01:32:48
回答 1查看 303关注 0票数 0

我想在我的RQ worker中使用logging.config.dictConfig。但是,我发现在我运行dictConfig()之后,worker将不再引发在生产中不起作用的异常。

下面是我的worker代码:

代码语言:javascript
运行
复制
import logging
import logging.config

config = {
    'version': 1,
    'disable_existing_loggers': True,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'stream': 'ext://sys.stdout',
            'level': 'DEBUG'
        }
    },
    'root': {
        'level': 'DEBUG',
        'handlers': ['console']
    }
}

logging.config.dictConfig(config)

log = logging.getLogger('test')


def raises():
    '''This is the worker function'''
    log.info('running raises')
    raise RuntimeError

当worker接收到作业时,它只是在log语句之后暂停执行,不会引发任何异常:

代码语言:javascript
运行
复制
12:28:09 log-test: log_test.raises() (d59ad742-4dcd-4d4f-84e2-6f747c21d603)
running raises

编辑:另一个有趣的问题是sys.excepthook不是在worker上下文中调用的。

EN

回答 1

Stack Overflow用户

发布于 2019-03-02 02:33:51

事实证明,RQ与它的日志设置是紧密耦合的。实际上,Worker类包含Logger的一个实例--当调用dictConfig时,对此记录器的引用将中断。

解决方案是在我的配置中包含一个rq.worker记录器:

代码语言:javascript
运行
复制
config = {
    'version': 1,
    'formatters': {
        'rq': {
            'format': '%(asctime)s %(message)s',
            'datefmt': '%H:%M:%S'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'stream': 'ext://sys.stdout',
            'level': 'DEBUG'
        },
        'rq': {
            'class': 'rq.utils.ColorizingStreamHandler',
            'formatter': 'rq'
        }
    },
    'loggers': {
        'rq.worker': {
            'level': 'INFO',
            'handlers': ['rq'],
            'propagate': False
        }
    },
    'root': {
        'class': 'logging.RootLogger',
        'level': 'DEBUG',
        'handlers': ['console']
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54949642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档