Use run lifecycle for live strategy status
This commit is contained in:
parent
4ae42baeb1
commit
1660b13778
@ -705,21 +705,23 @@ def resume_strategy(user_id: str):
|
|||||||
return {"status": "resumed", "run_id": run_id}
|
return {"status": "resumed", "run_id": run_id}
|
||||||
|
|
||||||
def get_strategy_status(user_id: str):
|
def get_strategy_status(user_id: str):
|
||||||
run_id = get_active_run_id(user_id)
|
running_run_id = get_running_run_id(user_id)
|
||||||
|
run_id = running_run_id or get_active_run_id(user_id)
|
||||||
cfg = _load_config(user_id, run_id) if run_id else {}
|
cfg = _load_config(user_id, run_id) if run_id else {}
|
||||||
|
default_status = "RUNNING" if running_run_id else ("STOPPED" if run_id else "IDLE")
|
||||||
with db_connection() as conn:
|
with db_connection() as conn:
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(
|
cur.execute(
|
||||||
"SELECT status, last_updated FROM engine_status WHERE user_id = %s AND run_id = %s",
|
"SELECT last_updated FROM engine_status WHERE user_id = %s AND run_id = %s",
|
||||||
(user_id, run_id),
|
(user_id, run_id),
|
||||||
)
|
)
|
||||||
row = cur.fetchone()
|
row = cur.fetchone()
|
||||||
if not row:
|
if not row:
|
||||||
status = {"status": "IDLE", "last_updated": None}
|
status = {"status": default_status, "last_updated": None}
|
||||||
else:
|
else:
|
||||||
status = {
|
status = {
|
||||||
"status": row[0],
|
"status": default_status,
|
||||||
"last_updated": _format_local_ts(row[1]),
|
"last_updated": _format_local_ts(row[0]),
|
||||||
}
|
}
|
||||||
status["run_id"] = run_id
|
status["run_id"] = run_id
|
||||||
sip_frequency = cfg.get("sip_frequency")
|
sip_frequency = cfg.get("sip_frequency")
|
||||||
@ -742,7 +744,7 @@ def get_strategy_status(user_id: str):
|
|||||||
"broker": cfg.get("broker"),
|
"broker": cfg.get("broker"),
|
||||||
"active": cfg.get("active"),
|
"active": cfg.get("active"),
|
||||||
}
|
}
|
||||||
if status.get("status") == "RUNNING":
|
if running_run_id:
|
||||||
mode = (cfg.get("mode") or "LIVE").strip().upper()
|
mode = (cfg.get("mode") or "LIVE").strip().upper()
|
||||||
with engine_context(user_id, run_id):
|
with engine_context(user_id, run_id):
|
||||||
state = load_state(mode=mode)
|
state = load_state(mode=mode)
|
||||||
@ -765,13 +767,15 @@ def get_strategy_status(user_id: str):
|
|||||||
return status
|
return status
|
||||||
|
|
||||||
def get_engine_status(user_id: str):
|
def get_engine_status(user_id: str):
|
||||||
run_id = get_active_run_id(user_id)
|
running_run_id = get_running_run_id(user_id)
|
||||||
|
run_id = running_run_id or get_active_run_id(user_id)
|
||||||
status = {
|
status = {
|
||||||
"state": "STOPPED",
|
"state": "STOPPED",
|
||||||
"run_id": run_id,
|
"run_id": run_id,
|
||||||
"user_id": user_id,
|
"user_id": user_id,
|
||||||
"last_heartbeat_ts": None,
|
"last_heartbeat_ts": None,
|
||||||
}
|
}
|
||||||
|
if running_run_id:
|
||||||
with db_connection() as conn:
|
with db_connection() as conn:
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(
|
cur.execute(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user