С помощью Github и stackoverflow я написал декоратор логов для измерения времени выполнения функции и выдачи исключения, если функция не выполняется.Код:
def log(logger):
def log_decorator(function):
def wrapper(*args, **kwargs):
try:
start_time = time.time()
logger.info('Starting function -' + function.__name__)
return function(*args, **kwargs)
except Exception as err:
logger.exception(err)
raise
finally:
end_time = time.time()
logger.info('End function - ' + function.__name__)
logger.info('Execution time %s milliseconds', (end_time-start_time)*1000)
return wrapper
return log_decorator
У меня есть несколько вопросов:
- На локальную переменную можно ссылаться до предупреждения о назначении при доступе к start_time из блока finally.Как ее решить?
- Исключение имеет пустой рейз.Это хорошая практика?