@@ -1298,7 +1298,7 @@ def dashboard_link(self):
12981298 try :
12991299 return self .cluster .dashboard_link
13001300 except AttributeError :
1301- scheduler , info = self ._get_scheduler_info ()
1301+ scheduler , info = self ._get_scheduler_info (n_workers = 0 )
13021302 if scheduler is None :
13031303 return None
13041304 else :
@@ -1312,20 +1312,20 @@ def dashboard_link(self):
13121312
13131313 return format_dashboard_link (host , port )
13141314
1315- def _get_scheduler_info (self ):
1315+ def _get_scheduler_info (self , n_workers ):
13161316 from distributed .scheduler import Scheduler
13171317
13181318 if (
13191319 self .cluster
13201320 and hasattr (self .cluster , "scheduler" )
13211321 and isinstance (self .cluster .scheduler , Scheduler )
13221322 ):
1323- info = self .cluster .scheduler .identity ()
1323+ info = self .cluster .scheduler .identity (n_workers = n_workers )
13241324 scheduler = self .cluster .scheduler
13251325 elif (
13261326 self ._loop_runner .is_started () and self .scheduler and not self .asynchronous
13271327 ):
1328- info = sync (self .loop , self .scheduler .identity )
1328+ info = sync (self .loop , self .scheduler .identity , n_workers = n_workers )
13291329 scheduler = self .scheduler
13301330 else :
13311331 info = self ._scheduler_identity
@@ -1368,7 +1368,7 @@ def _repr_html_(self):
13681368 except PackageNotFoundError :
13691369 JUPYTERLAB = False
13701370
1371- scheduler , info = self ._get_scheduler_info ()
1371+ scheduler , info = self ._get_scheduler_info (n_workers = 5 )
13721372
13731373 return get_template ("client.html.j2" ).render (
13741374 id = self .id ,
@@ -1585,18 +1585,20 @@ async def _ensure_connected(self, timeout=None):
15851585
15861586 logger .debug ("Started scheduling coroutines. Synchronized" )
15871587
1588- async def _update_scheduler_info (self ):
1588+ async def _update_scheduler_info (self , n_workers = 5 ):
15891589 if self .status not in ("running" , "connecting" ) or self .scheduler is None :
15901590 return
15911591 try :
1592- self ._scheduler_identity = SchedulerInfo (await self .scheduler .identity ())
1592+ self ._scheduler_identity = SchedulerInfo (
1593+ await self .scheduler .identity (n_workers = n_workers )
1594+ )
15931595 except OSError :
15941596 logger .debug ("Not able to query scheduler for identity" )
15951597
15961598 async def _wait_for_workers (
15971599 self , n_workers : int , timeout : float | None = None
15981600 ) -> None :
1599- info = await self .scheduler .identity ()
1601+ info = await self .scheduler .identity (n_workers = - 1 )
16001602 self ._scheduler_identity = SchedulerInfo (info )
16011603 if timeout :
16021604 deadline = time () + parse_timedelta (timeout )
@@ -1619,7 +1621,7 @@ def running_workers(info):
16191621 % (running_workers (info ), n_workers , timeout )
16201622 )
16211623 await asyncio .sleep (0.1 )
1622- info = await self .scheduler .identity ()
1624+ info = await self .scheduler .identity (n_workers = - 1 )
16231625 self ._scheduler_identity = SchedulerInfo (info )
16241626
16251627 def wait_for_workers (self , n_workers : int , timeout : float | None = None ) -> None :
@@ -4407,11 +4409,14 @@ async def _profile(
44074409 else :
44084410 return state
44094411
4410- def scheduler_info (self , ** kwargs ) :
4412+ def scheduler_info (self , n_workers : int = 5 , ** kwargs : Any ) -> SchedulerInfo :
44114413 """Basic information about the workers in the cluster
44124414
44134415 Parameters
44144416 ----------
4417+ n_workers: int
4418+ The number of workers for which to fetch information. To fetch all,
4419+ use -1.
44154420 **kwargs : dict
44164421 Optional keyword arguments for the remote function
44174422
@@ -4429,7 +4434,7 @@ def scheduler_info(self, **kwargs):
44294434 'time-delay': 0.0061032772064208984}}}
44304435 """
44314436 if not self .asynchronous :
4432- self .sync (self ._update_scheduler_info )
4437+ self .sync (self ._update_scheduler_info , n_workers = n_workers )
44334438 return self ._scheduler_identity
44344439
44354440 def dump_cluster_state (
0 commit comments