Do not delay a browser restart without a screen; clearer reload error
Without a connected monitor every Chromium start waited 30 s for one, so DevTools was unreachable for ~35 s after a restart. Only wait right after boot. The reload error now says Chromium may still be starting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b790f57531
commit
7e07428a81
3 files changed
+30
-5
No files matched your search
@@ -19,7 +19,7 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
from urllib.parse import urlencode
|
||||
|
||||
from . import logutil
|
||||
from . import logutil, sysinfo
|
||||
from .config import load_config
|
||||
from .paths import Paths, load_paths
|
||||
from .validation import parse_resolution
|
||||
@@ -153,15 +153,21 @@ def wait_for_x(timeout: float = 60) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
BOOT_GRACE_SECONDS = 180
|
||||
|
||||
|
||||
def prepare_display(paths: Paths, config: dict[str, Any]) -> tuple[int, int] | None:
|
||||
outputs: list[dict[str, Any]] = []
|
||||
# A monitor that powers up after the Pi may need a moment to report itself.
|
||||
for _ in range(15):
|
||||
# A monitor that powers up together with the Pi may need a moment to report
|
||||
# itself. Later starts (a browser restart without a screen) should not wait.
|
||||
attempts = 15 if (sysinfo.uptime_seconds() or 0) < BOOT_GRACE_SECONDS else 1
|
||||
for attempt in range(attempts):
|
||||
if attempt:
|
||||
time.sleep(2)
|
||||
proc = _run(["xrandr", "--query"])
|
||||
outputs = parse_xrandr(proc.stdout) if proc and proc.returncode == 0 else []
|
||||
if outputs:
|
||||
break
|
||||
time.sleep(2)
|
||||
size = None
|
||||
if outputs:
|
||||
output = outputs[0]
|
||||
|
||||
@@ -357,7 +357,12 @@ def kiosk_reload():
|
||||
audit("page_reload")
|
||||
return _action_response(True, "De pagina wordt herladen.", request.referrer or url_for("ui.dashboard"))
|
||||
except CDPError as exc:
|
||||
return _action_response(False, f"Herladen mislukt: {exc}", request.referrer or url_for("ui.dashboard"))
|
||||
current_app.logger.warning("Herladen mislukt: %s", exc)
|
||||
return _action_response(
|
||||
False,
|
||||
"Herladen mislukt: Chromium reageert niet. Als hij net (her)start, probeer het over een halve minuut opnieuw.",
|
||||
request.referrer or url_for("ui.dashboard"),
|
||||
)
|
||||
|
||||
|
||||
def _helper_action(event: str, verb: str, *args: str, back: str):
|
||||
|
||||
Reference in new issue
Block a user