diff --git a/app/maintenance.py b/app/maintenance.py index e6358c9..b1baa0c 100644 --- a/app/maintenance.py +++ b/app/maintenance.py @@ -23,6 +23,7 @@ from runtime import ( ensure_web_pool, start_rdp_slot_container, stop_runtime_container, + web_pool_container_name, ) logger = logging.getLogger("portal") @@ -58,10 +59,16 @@ def cleanup_loop(): rdp_slots_to_restart.append(int(cid.split(":", 1)[1])) except Exception: pass + elif cid.startswith("WEBPOOLIDX:"): + try: + slot = int(cid.split(":", 1)[1]) + stop_runtime_container(web_pool_container_name(slot)) + except Exception: + logger.exception("webpool_slot_recycle_failed cid=%s", cid) elif cid and not ( cid.startswith("POOL:") or cid.startswith("POOLIDX:") - or cid.startswith("WEBPOOLIDX:") + or cid.startswith("RDPSLOT:") ): stop_runtime_container(cid) sess.status = SessionStatus.EXPIRED diff --git a/app/runtime.py b/app/runtime.py index 8b74e10..ff10eaf 100644 --- a/app/runtime.py +++ b/app/runtime.py @@ -145,7 +145,7 @@ def ensure_web_pool(target_size: Optional[int] = None) -> None: "portal.pool.slot": str(i), } env = { - "IDLE_TIMEOUT": str(SESSION_IDLE_SECONDS), + "IDLE_TIMEOUT": "86400", "ENABLE_HEARTBEAT": "0", "SESSION_ID": f"webpool-{i}", "X11VNC_FLAGS": X11VNC_FLAGS,