Я хотел бы использовать logging.config.dictConfig
в моем RQ работнике.Но я обнаружил, что после запуска dictConfig()
рабочий больше не будет вызывать исключения, которые не будут работать в рабочей среде.
Вот мой рабочий код:
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
Когда рабочийполучая задание, он просто останавливает выполнение после оператора log без возражений:
12:28:09 log-test: log_test.raises() (d59ad742-4dcd-4d4f-84e2-6f747c21d603)
running raises
EDIT: еще одна интересная часть головоломки состоит в том, что sys.excepthook
не вызывается в рабочем контексте.