Python - записать одно последнее сообщение о выходе перед выходом - PullRequest
0 голосов
/ 06 июля 2019

У меня есть какой-то модуль логгера, который я написал (он наследует от logging.Logger, но я не думаю, что это важная деталь для обсуждения)

Я хочу написать окончательное сообщение перед выходом, этосообщение будет содержать информацию о том, сколько времени прошло с момента запуска скрипта, и так далее.Он должен работать при нормальном завершении работы скрипта, при вызове sys.exit() и при возникновении необработанного исключения (например, сбой assert).

Я не уверен, как правильно это сделать.Я рассматриваю возможность использования global, который напишет сообщение при __del__, но я знаю, что в python это не всегда вызывается.Я подумал об использовании atexit, но я не уверен, гарантированно ли он будет вызван, и будут ли доступны импортированные модули (я также хочу записывать свои сообщения на удаленный сервер).

Я использую Python3.7

1 Ответ

0 голосов
/ 06 июля 2019

Проверить atexit модуль.Работает с исключениями и sys.exit

import atexit
from datetime import datetime
from time import sleep

time_start = None

def main():
    global time_start
    time_start = datetime.now()
    sleep(2)
    atexit.register(log_total_time)


def log_total_time():
    print('Elapsed:',datetime.now() - time_start)


if __name__ == "__main__":
    main()

вывод:

Elapsed: 0:00:02.417707

https://docs.python.org/3/library/atexit.html

...