Upgraded lifecycles by putting session and thread registration inside the registry and handling initialization at the manageLifecycle level
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user