#python #logging
#python #ведение журнала
Вопрос:
Я запускаю скрипт на python, который обычно выполняется где-то между 6-30 часами. Я использую модуль python logger для записи сообщений в текстовый файл. Иногда сценарий случайным образом завершается ошибкой с сообщением об ошибке: «AttributeError: объект ‘function’ не имеет атрибута ‘info'» в следующем операторе кода:
if args.isNational == 1:
log.info("Started computing xyz...")
Почему это происходит? И каков наилучший способ смягчить это?
Комментарии:
1. В какой-то момент во время выполнения вы присваиваете имени что-то еще
log
.2. Если это всегда происходит в одном и том же месте, ищите
log = whatever
в этой цепочке выполнения. Вы могли бы обернуть этотlog.info()
вызов в try / except иprint(log.info)
который должен напечатать что-то вроде<function the_offending_function at ...>
того, чтобы дать вам лучшее представление о том, что там получилось.3. Я, конечно, не назначаю что-то еще тому же журналу. И это не всегда происходит в одном и том же месте. Я попробую try / except, но на данный момент кажется, что обработчик журнала просто умирает или что-то в этом роде, если выполнение скрипта занимает много времени. Это вообще возможно?
4. Я разобрался с проблемой — исходный обработчик журнала был запущен в другом контексте spark. Я запустил новый контекст spark и попытался получить доступ к исходному обработчику журнала, но, похоже, это не сработало. Ошибка исчезла, когда я продолжил работу в том же контексте spark.