diff --git a/src/frontend/flask_app/blueprints/admin.py b/src/frontend/flask_app/blueprints/admin.py index 77b2f8e..bf38e8c 100644 --- a/src/frontend/flask_app/blueprints/admin.py +++ b/src/frontend/flask_app/blueprints/admin.py @@ -182,7 +182,7 @@ def api_camera_sources(): if parsed.scheme not in ("http", "https") or not parsed.netloc: return jsonify({"error": True, "detail": _("Indirizzo della camera non valido")}), 400 try: - resp = http_requests.get(f"{url.rstrip('/')}/camera/sources", timeout=5) + resp = http_requests.get(f"{url.rstrip('/')}/camera/sources", timeout=15) # #106: era 5, la prima apertura GenTL supera 15 s except http_requests.RequestException as exc: return jsonify({ "error": True, diff --git a/src/frontend/flask_app/blueprints/maker.py b/src/frontend/flask_app/blueprints/maker.py index 6002a9d..e4e51c8 100644 --- a/src/frontend/flask_app/blueprints/maker.py +++ b/src/frontend/flask_app/blueprints/maker.py @@ -17,6 +17,9 @@ from services.file_proxy import proxy_file maker_bp = Blueprint("maker", __name__, url_prefix="/maker") +# #106: la prima apertura GenTL dopo l'avvio supera 15 s, il grab ha bisogno di piu margine +CAMERA_GRAB_TIMEOUT_S = 60 + # ============================================================================ # PAGINE (GET) @@ -608,7 +611,7 @@ def api_station_camera_grab(station_id: int): resp = http_requests.post( f"{camera_url.rstrip('/')}/camera/grab", json={"source": camera_source, "trigger": "continuo", "timeout_ms": 5000}, - timeout=15, + timeout=CAMERA_GRAB_TIMEOUT_S, # #106: era 15, troppo corto alla prima apertura GenTL ) except http_requests.RequestException as exc: return jsonify({ diff --git a/src/frontend/flask_app/blueprints/measure.py b/src/frontend/flask_app/blueprints/measure.py index c634b53..dc19562 100644 --- a/src/frontend/flask_app/blueprints/measure.py +++ b/src/frontend/flask_app/blueprints/measure.py @@ -17,6 +17,9 @@ from services.file_proxy import proxy_file measure_bp = Blueprint("measure", __name__) +# #106: la prima apertura GenTL dopo l'avvio supera 15 s, il grab ha bisogno di piu margine +CAMERA_GRAB_TIMEOUT_S = 60 + # Session key holding a station chosen at runtime, overriding Config.STATION_CODE. STATION_OVERRIDE_KEY = "station_override" @@ -1117,7 +1120,7 @@ def api_vision_grab(): resp = http_requests.post( f"{camera_url.rstrip('/')}/camera/grab", json={"source": camera_source, "trigger": "continuo", "timeout_ms": 5000}, - timeout=15, + timeout=CAMERA_GRAB_TIMEOUT_S, # #106: era 15, troppo corto alla prima apertura GenTL ) except http_requests.RequestException as exc: return jsonify({ diff --git a/src/frontend/flask_app/tests/test_admin_stations.py b/src/frontend/flask_app/tests/test_admin_stations.py index 084fc79..1b2289a 100644 --- a/src/frontend/flask_app/tests/test_admin_stations.py +++ b/src/frontend/flask_app/tests/test_admin_stations.py @@ -278,7 +278,7 @@ def test_camera_sources_proxy_keeps_only_the_three_fields(logged_in_client, mock "name": "camera:folder", "label": "Cartella", "kind": "folder"} assert len(resp.get_json()["sources"]) == 2 assert get.call_args.args[0] == "http://acq:8765/camera/sources" - assert get.call_args.kwargs["timeout"] == 5 + assert get.call_args.kwargs["timeout"] == 15 # #106 @pytest.mark.parametrize("url", ["ftp://x", "", "http://", "acq:8765"]) diff --git a/src/frontend/flask_app/tests/test_measure_camera_grab.py b/src/frontend/flask_app/tests/test_measure_camera_grab.py index 23fd5cd..4b6308e 100644 --- a/src/frontend/flask_app/tests/test_measure_camera_grab.py +++ b/src/frontend/flask_app/tests/test_measure_camera_grab.py @@ -68,7 +68,7 @@ def test_grab_passes_png_through(logged_in_client, mock_api_client, monkeypatch) assert kwargs["json"] == { "source": "camera:folder", "trigger": "continuo", "timeout_ms": 5000, } - assert kwargs["timeout"] == 15 + assert kwargs["timeout"] == 60 # #106 def test_grab_service_503_is_502(logged_in_client, mock_api_client, monkeypatch):