diff --git a/core/execution/createthread.py b/core/execution/createthread.py index 381d74a..748fbf2 100644 --- a/core/execution/createthread.py +++ b/core/execution/createthread.py @@ -1,30 +1,15 @@ import threading -from .lifecyclemanager import registerLifecycle + from .lifecyclemanager import manageLifecycle -#threadlist = [] -#threadnum = 0 - -def buildThread(module, lifecycles): - #global threadnum - #threadnum += 1 - - #threadname = f"thread.{threadnum}" +def buildThread(module): thread = threading.Thread( target=manageLifecycle, - args=(module, lifecycles), + args=(module,), name=module.name ) thread.start() - #print(lifecycles) - #registryname = thread.name - #registryvalue = thread - - #lifecycles = registerLifecycle (module, lifecycles, thread.name, thread) - - #threadlist.append(thread) - - return thread, lifecycles + return thread diff --git a/core/execution/executioncontract.py b/core/execution/executioncontract.py index 16aec92..26bc52a 100644 --- a/core/execution/executioncontract.py +++ b/core/execution/executioncontract.py @@ -1,7 +1,7 @@ from core.execution.action import buildAction from core.execution.operation import buildOperation from core.execution.monitor import buildMonitor -from core.runtime import manageFailure +#from core.runtime import manageFailure from core.execution.recursive import buildRecursive def executeContract(module, outputs, process): diff --git a/core/execution/lifecyclemanager/lifecyclemanager.py b/core/execution/lifecyclemanager/lifecyclemanager.py index aebd028..d3e851d 100644 --- a/core/execution/lifecyclemanager/lifecyclemanager.py +++ b/core/execution/lifecyclemanager/lifecyclemanager.py @@ -1,30 +1,42 @@ import time import os -from core.execution.operation import buildOperation -from core.execution.action import buildAction from core.execution.executioncontract import executeContract +from core.apirequest.execute import getSession +from core.execution.lifecyclemanager.lifecycleregistry import registerLifecycle -#sleeptime = int(os.environ.get("REFRESH_INTERVAL", 180)) +lifecycles = {} -def manageLifecycle(module, lifecycles): #lifecycles, state): +def manageLifecycle(module): + lifecycle_log = os.environ.get("LOGS_LIFECYCLE", "false").lower() == "true" outputs = {} + registerLifecycle (module, lifecycles) + if lifecycles[module.name]["mode"] == "continuous": while lifecycles[module.name]["mode"] == "continuous": + lifecycles[module.name]["state"] = "active" - outputs, response = executeContract(module, outputs) + outputs, response = executeContract(module, outputs, None) - lifecycle_log = bool(os.environ.get("LOGS_LIFECYCLE", False)) if lifecycle_log: print(f"{module.name} thread {lifecycles[module.name][module.name]} running in {lifecycles[module.name]['mode']} mode") - - time.sleep(module.sleeptime) + print(lifecycles) + + lifecycles[module.name]["state"] = "sleep" + time.sleep(lifecycles[module.name]["refresh_rate"]) + lifecycles[module.name]["state"] = "stopped" elif lifecycles[module.name]["mode"] == "oneshot": - print(lifecycles) - outputs, response = executeContract(module) + lifecycles[module.name]["state"] = "active" + + if lifecycle_log: + print(f"{module.name} thread {lifecycles[module.name][module.name]} running in {lifecycles[module.name]['mode']} mode") + print(lifecycles) + + outputs, response = executeContract(module, outputs, None) + + lifecycles[module.name]["state"] = "stopped" - #print(lifecycles) return diff --git a/core/execution/lifecyclemanager/lifecycleregistry.py b/core/execution/lifecyclemanager/lifecycleregistry.py index fb459e1..64a0b9c 100644 --- a/core/execution/lifecyclemanager/lifecycleregistry.py +++ b/core/execution/lifecyclemanager/lifecycleregistry.py @@ -1,26 +1,38 @@ import threading -import time -def registerLifecycle(module, lifecycles, registryname, registryvalue): +from core.apirequest.execute import getSession + +def registerLifecycle(module, lifecycles): if module.name not in lifecycles: lifecycles[module.name] = {} thread = threading.current_thread() - lifecycles[module.name][thread.name] = thread - lifecycles[module.name][registryname] = registryvalue - print(lifecycles) + session = getSession() + + session_data = { + "created_at": session.created_at, + "lifetime": 1800, + "valid": True + } + + session.name = f"{module.name} Session" + + lifecycles[module.name][session.name] = session_data + #print(lifecycles) if "mode" not in lifecycles[module.name]: - lifecycles[module.name]["mode"] = {} - elif lifecycles[module.name]["mode"] == "continuous": + mode = getattr(module, "mode") + lifecycles[module.name]["mode"] = mode + + if lifecycles[module.name]["mode"] == "continuous": lifecycles[module.name]["refresh_rate"] = module.sleeptime - elif not lifecycles[module.name]["mode"]: + if not lifecycles[module.name]["mode"]: lifecycles[module.name]["mode"] = "oneshot" - lifecycles[module.name][registryname] = registryvalue + #lifecycles[module.name][registryname] = registryvalue