Почему python.ошибка регистратора или тайм-аут, когда скрипт выполняется в течение длительного периода времени?

#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.