fix: retry SEARCHING up to 3 times, don't rush state machine
This commit is contained in:
+15
-1
@@ -209,11 +209,25 @@ def register(app):
|
||||
parsed = _parse_response(raw, sess["data"])
|
||||
logger.info(f"[{session_id}] {parsed}")
|
||||
|
||||
# Если есть очередь команд — отдаём следующую
|
||||
# SEARCHING/NO DATA — не продвигаем стейт, повторяем команду
|
||||
is_skip = raw.startswith("SEARCHING") or raw == "NO DATA" or raw == "STOPPED"
|
||||
if is_skip:
|
||||
sess["retries"] = sess.get("retries", 0) + 1
|
||||
if sess["retries"] > 3:
|
||||
logger.info(f"[{session_id}] Giving up after {sess['retries']} retries")
|
||||
sess["retries"] = 0
|
||||
# принудительно продвигаем стейт ниже
|
||||
elif sess["queue"]:
|
||||
cmd = sess["queue"].pop(0)
|
||||
return jsonify({"cmd": cmd, "session": session_id, "state": sess["state"]})
|
||||
|
||||
# Если есть очередь — отдаём следующую
|
||||
if sess["queue"]:
|
||||
cmd = sess["queue"].pop(0)
|
||||
return jsonify({"cmd": cmd, "session": session_id, "state": sess["state"]})
|
||||
|
||||
sess["retries"] = 0
|
||||
|
||||
# Определяем что дальше
|
||||
next_cmds = _next_commands(sess)
|
||||
if next_cmds:
|
||||
|
||||
Reference in New Issue
Block a user