diff --git a/trustgraph-flow/trustgraph/gateway/dispatch/manager.py b/trustgraph-flow/trustgraph/gateway/dispatch/manager.py index 51161f9b..bddb009d 100644 --- a/trustgraph-flow/trustgraph/gateway/dispatch/manager.py +++ b/trustgraph-flow/trustgraph/gateway/dispatch/manager.py @@ -135,13 +135,19 @@ class DispatcherWrapper: class DispatcherManager: def __init__(self, backend, config_receiver, auth, - prefix="api-gateway", queue_overrides=None): + prefix="api-gateway", queue_overrides=None, timeout=120): """ ``auth`` is required. It flows into the Mux for first-frame WebSocket authentication and into downstream dispatcher construction. There is no permissive default — constructing a DispatcherManager without an authenticator would be a silent downgrade to no-auth on the socket path. + + ``timeout`` is the per-request timeout in seconds, propagated + to every dispatcher created by this manager. Must match the + gateway's ``--timeout`` flag so that long-running requests + are not prematurely cut off at the old hard-coded 120 s + ceiling. """ if auth is None: raise ValueError( @@ -149,6 +155,8 @@ class DispatcherManager: "is no no-auth mode" ) + self.timeout = timeout + self.backend = backend self.config_receiver = config_receiver self.config_receiver.add_handler(self) @@ -291,7 +299,7 @@ class DispatcherManager: dispatcher = global_dispatchers[kind]( backend = self.backend, - timeout = 120, + timeout = self.timeout, consumer = consumer_name, subscriber = consumer_name, request_queue = request_queue, @@ -448,7 +456,7 @@ class DispatcherManager: backend = self.backend, request_queue = qconfig["request"], response_queue = qconfig["response"], - timeout = 120, + timeout = self.timeout, consumer = f"{self.prefix}-{workspace}-{flow}-{kind}-request", subscriber = f"{self.prefix}-{workspace}-{flow}-{kind}-request", ) diff --git a/trustgraph-flow/trustgraph/gateway/service.py b/trustgraph-flow/trustgraph/gateway/service.py index 0f6a5070..fb51e1a2 100755 --- a/trustgraph-flow/trustgraph/gateway/service.py +++ b/trustgraph-flow/trustgraph/gateway/service.py @@ -119,6 +119,7 @@ class Api: prefix = "gateway", queue_overrides = queue_overrides, auth = self.auth, + timeout = self.timeout, ) self.endpoint_manager = EndpointManager(