From fa0c8b64d915fd21f2bf053df98aebe7935a3365 Mon Sep 17 00:00:00 2001 From: Robert Ohmacht Date: Thu, 13 Feb 2020 11:38:19 +0100 Subject: [PATCH] -logging of unsuccessful attempts of calling COM functions in WITecCOM (based on Josefs idea) --- ramancom/WITecCOM.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/ramancom/WITecCOM.py b/ramancom/WITecCOM.py index 086a262..c04eb29 100644 --- a/ramancom/WITecCOM.py +++ b/ramancom/WITecCOM.py @@ -60,27 +60,35 @@ class WITecCOM(RamanBase): """ def wrapper(*args, **kwargs): - def tryFunctionThreeTimes(): + def tryFunctionThreeTimes(c): success = False for _ in range(3): result = None + c += 1 try: result = comCallFunction(*args, **kwargs) success = True break except pythoncom.com_error: + comObj.logger.warning( + f'Unsuccessful {c}. attempt for COM call of function {comCallFunction.__name__}\n{pythoncom.com_error}' + ) sleep(1.) - return success, result + return success, result, c + + c = 0 comObj = args[0] #self is always passed as first argument - functionSucceeded, result = tryFunctionThreeTimes() + functionSucceeded, result, c = tryFunctionThreeTimes(c) if not functionSucceeded: + comObj.logger.warning(f'Reconnecting for function {comCallFunction.__name__}') comObj.disconnect() sleep(1.) comObj.connect() - functionSucceeded, result = tryFunctionThreeTimes() + functionSucceeded, result, c = tryFunctionThreeTimes(c) if not functionSucceeded: - showErrorMessageAsWidget(f'Com error on function {comCallFunction.__name__}') + comObj.logger.warning(f'COM error: function {comCallFunction.__name__} could not be executed') + showErrorMessageAsWidget(f'COM error on function {comCallFunction.__name__}') raise pythoncom.com_error return result return wrapper -- GitLab