Harden strategy resume failure handling

This commit is contained in:
Thigazhezhilan J 2026-03-28 14:25:42 +05:30
parent 382b5aa5f6
commit bc79894cd1

View File

@ -328,16 +328,32 @@ def _validate_live_broker_session(user_id: str):
if not broker_state.get("connected") or broker_name != "ZERODHA": if not broker_state.get("connected") or broker_name != "ZERODHA":
return False, broker_state, "broker_not_connected" return False, broker_state, "broker_not_connected"
session = get_session(user_id) try:
session = get_session(user_id)
except Exception as exc:
print(f"[STRATEGY] failed to load Zerodha session for {user_id}: {exc}", flush=True)
set_broker_auth_state(user_id, "EXPIRED")
return False, broker_state, "broker_auth_required"
if not session: if not session:
set_broker_auth_state(user_id, "EXPIRED") set_broker_auth_state(user_id, "EXPIRED")
return False, broker_state, "broker_auth_required" return False, broker_state, "broker_auth_required"
api_key = str(session.get("api_key") or "").strip()
access_token = str(session.get("access_token") or "").strip()
if not api_key or not access_token:
set_broker_auth_state(user_id, "EXPIRED")
return False, broker_state, "broker_auth_required"
try: try:
fetch_funds(session["api_key"], session["access_token"]) fetch_funds(api_key, access_token)
except KiteTokenError: except KiteTokenError:
set_broker_auth_state(user_id, "EXPIRED") set_broker_auth_state(user_id, "EXPIRED")
return False, broker_state, "broker_auth_required" return False, broker_state, "broker_auth_required"
except Exception as exc:
print(f"[STRATEGY] failed to validate Zerodha session for {user_id}: {exc}", flush=True)
set_broker_auth_state(user_id, "EXPIRED")
return False, broker_state, "broker_auth_required"
set_broker_auth_state(user_id, "VALID") set_broker_auth_state(user_id, "VALID")
return True, broker_state, "ok" return True, broker_state, "ok"
@ -612,14 +628,28 @@ def resume_strategy(user_id: str):
} }
if not engine_external: if not engine_external:
engine_config = _build_engine_config(user_id, run_id, None) try:
engine_config = _build_engine_config(user_id, run_id, None)
except Exception as exc:
return {
"status": "resume_failed",
"run_id": run_id,
"message": f"Unable to load the saved strategy state: {exc}",
}
if not engine_config: if not engine_config:
return { return {
"status": "resume_failed", "status": "resume_failed",
"run_id": run_id, "run_id": run_id,
"message": "Saved strategy configuration is incomplete.", "message": "Saved strategy configuration is incomplete.",
} }
started = start_engine(engine_config) try:
started = start_engine(engine_config)
except Exception as exc:
return {
"status": "resume_failed",
"run_id": run_id,
"message": f"Unable to resume the strategy engine: {exc}",
}
if not started: if not started:
return { return {
"status": "resume_failed", "status": "resume_failed",