Harden strategy resume failure handling
This commit is contained in:
parent
382b5aa5f6
commit
bc79894cd1
@ -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"
|
||||||
|
|
||||||
|
try:
|
||||||
session = get_session(user_id)
|
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:
|
||||||
|
try:
|
||||||
engine_config = _build_engine_config(user_id, run_id, None)
|
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.",
|
||||||
}
|
}
|
||||||
|
try:
|
||||||
started = start_engine(engine_config)
|
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",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user