Skip to content

Commit 321300d

Browse files
committed
create meaningful semaphore key name
1 parent e17f915 commit 321300d

File tree

1 file changed

+16
-10
lines changed
  • services/director-v2/src/simcore_service_director_v2/modules/comp_scheduler

1 file changed

+16
-10
lines changed

services/director-v2/src/simcore_service_director_v2/modules/comp_scheduler/_scheduler_dask.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
)
3131
from servicelib.utils import limited_as_completed, limited_gather
3232

33+
from ..._meta import APP_NAME
3334
from ...core.errors import (
3435
ComputationalBackendNotConnectedError,
3536
ComputationalBackendOnDemandNotReadyError,
@@ -57,38 +58,43 @@
5758
from ..db.repositories.comp_tasks import CompTasksRepository
5859
from ._constants import (
5960
MAX_CONCURRENT_PIPELINE_SCHEDULING,
60-
MODULE_NAME_WORKER,
6161
)
6262
from ._models import TaskStateTracker
6363
from ._scheduler_base import BaseCompScheduler
6464
from ._utils import (
6565
WAITING_FOR_START_STATES,
66-
get_redis_lock_key,
6766
)
6867

6968
_logger = logging.getLogger(__name__)
7069

7170
_DASK_CLIENT_RUN_REF: Final[str] = "{user_id}:{project_id}:{run_id}"
7271
_TASK_RETRIEVAL_ERROR_TYPE: Final[str] = "task-result-retrieval-timeout"
7372
_TASK_RETRIEVAL_ERROR_CONTEXT_TIME_KEY: Final[str] = "check_time"
73+
_DASK_CLUSTER_CLIENT_SEMAPHORE_CAPACITY: Final[int] = 20
7474

7575

76-
def _get_redis_client_from_scheduler(scheduler: "DaskScheduler") -> RedisClientSDK:
76+
def _get_redis_client_from_scheduler(
77+
user_id: UserID, # noqa: ARG001
78+
scheduler: "DaskScheduler",
79+
**kwargs, # noqa: ARG001
80+
) -> RedisClientSDK:
7781
return scheduler.redis_client
7882

7983

80-
def _unique_key_builder(_app, user_id: UserID, run_metadata: RunMetadataDict) -> str:
81-
return f"user_id_{user_id}-wallet_id_{run_metadata.get('wallet_id')}"
84+
def _get_semaphore_cluster_redis_key(
85+
user_id: UserID,
86+
*args, # noqa: ARG001
87+
run_metadata: RunMetadataDict,
88+
**kwargs, # noqa: ARG001
89+
) -> str:
90+
return f"{APP_NAME}-cluster-user_id_{user_id}-wallet_id_{run_metadata.get('wallet_id')}"
8291

8392

8493
@asynccontextmanager
8594
@with_limited_concurrency_cm(
8695
_get_redis_client_from_scheduler,
87-
key=get_redis_lock_key(
88-
MODULE_NAME_WORKER,
89-
unique_lock_key_builder=_unique_key_builder,
90-
),
91-
capacity=1,
96+
key=_get_semaphore_cluster_redis_key,
97+
capacity=_DASK_CLUSTER_CLIENT_SEMAPHORE_CAPACITY,
9298
blocking=True,
9399
blocking_timeout=None,
94100
)

0 commit comments

Comments
 (0)