diff --git a/Sources/pyOpenRPA/Orchestrator/Processor.py b/Sources/pyOpenRPA/Orchestrator/Processor.py index 7b5ef91c..36b7d48c 100644 --- a/Sources/pyOpenRPA/Orchestrator/Processor.py +++ b/Sources/pyOpenRPA/Orchestrator/Processor.py @@ -79,7 +79,7 @@ def ActivityListExecute(inGSettings, inActivityList): #gSettings lGSettingsDictKey = lActivityItem.pop("ArgGSettings",None) # # Prepare arg dict - gSettings - if type(lGSettingsDictKey) is str and lGSettingsDictKey is not "": # check if gSetting key is in ArgDict 13.02.2021 - Fix when ArgGSettings is "" + if type(lGSettingsDictKey) is str and lGSettingsDictKey != "": # check if gSetting key is in ArgDict 13.02.2021 - Fix when ArgGSettings is "" lActivityItem["ArgDict"][lGSettingsDictKey] = inGSettings # Set the gSettings in dict # # Prepare arg list elif type(lGSettingsDictKey) is int: # check if gSetting key is in ArgDict @@ -87,7 +87,7 @@ def ActivityListExecute(inGSettings, inActivityList): #Logger lLoggerDictKey = lActivityItem.pop("ArgLogger",None) # # Prepare arg dict - Logger - if type(lLoggerDictKey) is str and lLoggerDictKey is not "": # check if gSetting key is in ArgDict 13.02.2021 - Fix when ArgLogger is "" + if type(lLoggerDictKey) is str and lLoggerDictKey != "": # check if gSetting key is in ArgDict 13.02.2021 - Fix when ArgLogger is "" lActivityItem["ArgDict"][lLoggerDictKey] = lL # Set the lLogger in dict # # Prepare arg list elif type(lLoggerDictKey) is int: # check if gSetting key is in ArgDict diff --git a/Sources/pyOpenRPA/Orchestrator/Server.py b/Sources/pyOpenRPA/Orchestrator/Server.py index 2b9e7167..b034d71d 100644 --- a/Sources/pyOpenRPA/Orchestrator/Server.py +++ b/Sources/pyOpenRPA/Orchestrator/Server.py @@ -506,9 +506,12 @@ class testHTTPServer_RequestHandler(BaseHTTPRequestHandler): self.send_response(403) # Send headers self.end_headers() + except BrokenPipeError as e: + lL = gSettingsDict["Logger"] + if lL: lL.warning(f"Сервер (do_GET): Возникла ошибка сети - BrokenPipeError: [Errno 32] Broken pipe. Сервер продолжает работу") except Exception as e: lL = gSettingsDict["Logger"] - if lL: lL.exception(f"Server.do_GET: Global error handler - look traceback below.") + if lL: lL.exception(f"Сервер (do_GET): Неопознанная ошибка сети - см. текст ошибки. Сервер продолжает работу") # POST def do_POST(self): try: @@ -608,20 +611,34 @@ class testHTTPServer_RequestHandler(BaseHTTPRequestHandler): # Send headers self.end_headers() return + except BrokenPipeError as e: + lL = gSettingsDict["Logger"] + if lL: lL.warning(f"Сервер (do_POST): Возникла ошибка сети - BrokenPipeError: [Errno 32] Broken pipe. Сервер продолжает работу") except Exception as e: lL = gSettingsDict["Logger"] - if lL: lL.exception(f"Server.do_POST: Global error handler - look traceback below.") + if lL: lL.exception(f"Сервер (do_POST): Неопознанная ошибка сети - см. текст ошибки. Сервер продолжает работу") #Logging #!Turn it on to stop print in console #def log_message(self, format, *args): # return + + + class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): daemon_threads = True """Handle requests in a separate thread.""" def finish_request(self, request, client_address): - request.settimeout(gSettingsDict["ServerDict"]["RequestTimeoutSecFloat"]) - # "super" can not be used because BaseServer is not created from object - HTTPServer.finish_request(self, request, client_address) + try: + request.settimeout(gSettingsDict["ServerDict"]["RequestTimeoutSecFloat"]) + # "super" can not be used because BaseServer is not created from object + HTTPServer.finish_request(self, request, client_address) + except ConnectionResetError as e: + lL = gSettingsDict["Logger"] + if lL: lL.warning(f"Сервер (finish_request): Возникла ошибка сети - ConnectionResetError: [Errno 104] Connection reset by peer. Сервер продолжает работу") + except Exception as e: + lL = gSettingsDict["Logger"] + if lL: lL.exception(f"Сервер (finish_request): Неопознанная ошибка сети - см. текст ошибки. Сервер продолжает работу") + #inGlobalDict # "JSONConfigurationDict": import ssl