Commit 5c4528b1 authored by Erly Villaroel's avatar Erly Villaroel

Timeout

parent acead9c2
...@@ -11,3 +11,4 @@ class CodeResponseEnum(Enum): ...@@ -11,3 +11,4 @@ class CodeResponseEnum(Enum):
OUTPUT_ERROR = 606 OUTPUT_ERROR = 606
EMPTY_DATASET = 607 EMPTY_DATASET = 607
ERROR = 609 ERROR = 609
TIMEOUT_ERROR = 800
...@@ -2,7 +2,7 @@ from typing import Dict, Any ...@@ -2,7 +2,7 @@ from typing import Dict, Any
import time import time
import traceback as traceback_lib import traceback as traceback_lib
import importlib import importlib
from threading import Timer
from config import Config as cfg from config import Config as cfg
from app.main.engine.util.Timezone import Timezone from app.main.engine.util.Timezone import Timezone
from app.main.engine.util.Utils import Utils from app.main.engine.util.Utils import Utils
...@@ -11,6 +11,11 @@ from app.main.engine.enum.CodeResponseEnum import CodeResponseEnum ...@@ -11,6 +11,11 @@ from app.main.engine.enum.CodeResponseEnum import CodeResponseEnum
from app.main.engine.database.Database import Database from app.main.engine.database.Database import Database
def timeout_function():
raise TimeoutError("Timeout occurred")
class Process: class Process:
def __init__(self, app, descriptor: Dict[str, Any]) -> None: def __init__(self, app, descriptor: Dict[str, Any]) -> None:
self.app = app self.app = app
...@@ -21,7 +26,11 @@ class Process: ...@@ -21,7 +26,11 @@ class Process:
def run(self) -> Dict[str, Any]: def run(self) -> Dict[str, Any]:
status, status_description = StatusEnum.OK, "" status, status_description = StatusEnum.OK, ""
input_time = self.descriptor["config-params"]["max-timeout-per-combinations"]
t = Timer(input_time, timeout_function)
t.start()
try: try:
# Obteniendo la conexión a la BD # Obteniendo la conexión a la BD
db_params = cfg.db_params db_params = cfg.db_params
source = Database(self.app, db_params) source = Database(self.app, db_params)
...@@ -75,9 +84,13 @@ class Process: ...@@ -75,9 +84,13 @@ class Process:
except ReferenceError as e: except ReferenceError as e:
self.app.logger.error(f"Error validando parámetros del descriptor. {e}") self.app.logger.error(f"Error validando parámetros del descriptor. {e}")
status, status_description = CodeResponseEnum.PARAMETERS_ERROR, str(e) status, status_description = CodeResponseEnum.PARAMETERS_ERROR, str(e)
except TimeoutError as e:
self.app.logger.error(f"Error validando parámetros del descriptor. {e}")
status, status_description = CodeResponseEnum.TIMEOUT_ERROR, str(e)
except Exception as e: except Exception as e:
traceback_lib.print_exc() traceback_lib.print_exc()
self.app.logger.error(f"Error procesando engine. {e}") self.app.logger.error(f"Error procesando engine. {e}")
status, status_description = StatusEnum.ERROR, str(e) status, status_description = StatusEnum.ERROR, str(e)
finally: finally:
t.cancel()
return self.utils.create_response(status, status_description) return self.utils.create_response(status, status_description)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment