From cfbb37238f523a9a82b4798d8f4659c7dcdd8e43 Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Thu, 23 Mar 2023 19:08:11 +0200 Subject: [PATCH] Add default workers timeout to the server's configuration --- apiserver/apimodels/workers.py | 4 +--- apiserver/config/default/apiserver.conf | 4 ++++ apiserver/services/workers.py | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apiserver/apimodels/workers.py b/apiserver/apimodels/workers.py index a7524b7..0ea31a8 100644 --- a/apiserver/apimodels/workers.py +++ b/apiserver/apimodels/workers.py @@ -24,9 +24,7 @@ class WorkerRequest(Base): class RegisterRequest(WorkerRequest): - timeout = make_default( - IntField, DEFAULT_TIMEOUT - )() # registration timeout in seconds (default is 10min) + timeout = IntField(default=0) # registration timeout in seconds (if not specified, default is 10min) queues = ListField(six.string_types) # list of queues this worker listens to diff --git a/apiserver/config/default/apiserver.conf b/apiserver/config/default/apiserver.conf index 1b18911..a7b01a6 100644 --- a/apiserver/config/default/apiserver.conf +++ b/apiserver/config/default/apiserver.conf @@ -113,6 +113,10 @@ # Timeout in seconds on task status update. If exceeded # then task can be stopped without communicating to the worker task_update_timeout: 600 + + # Timeout in seconds for worker registration (or status report). If a worker did not report for this long, + # it is discarded from the server's table + default_timeout: 600 } check_for_updates { diff --git a/apiserver/services/workers.py b/apiserver/services/workers.py index b7d2222..b608fc7 100644 --- a/apiserver/services/workers.py +++ b/apiserver/services/workers.py @@ -56,6 +56,9 @@ def register(call: APICall, company_id, request: RegisterRequest): timeout = request.timeout queues = request.queues + if not timeout: + timeout = config.get("apiserver.workers.default_timeout", 10 * 60) + if not timeout or timeout <= 0: raise bad_request.WorkerRegistrationFailed( "invalid timeout", timeout=timeout, worker=worker