1515 Sequence ,
1616 Tuple ,
1717)
18+ from tqdm import tqdm
1819
1920import aiohttp
2021import click
@@ -599,10 +600,45 @@ async def _run(session, idx, name, envs,
599600 except Exception as e :
600601 print_fail ('[{0}] {1}' .format (idx , e ))
601602 return
603+
604+ async def display_kernel_pulling (compute_session : AsyncSession .ComputeSession ) -> bool :
605+ try :
606+ bgtask = compute_session .backgroundtask
607+ except Exception as e :
608+ print_error (e )
609+ return False
610+ else :
611+ with tqdm (total = 100 , unit = '%' ) as pbar :
612+ async with bgtask .listen_events () as response :
613+ async for ev in response :
614+ progress = json .loads (ev .data )
615+ if ev .event == 'bgtask_updated' :
616+ current = progress ['current_progress' ]
617+ total = progress ['total_progress' ]
618+ if total == 0 :
619+ pbar .n = 0
620+ else :
621+ pbar .n = round (current / total * 100 , 2 )
622+ pbar .update (0 )
623+ pbar .refresh ()
624+ elif ev .event == 'bgtask_done' :
625+ pbar .n = 100
626+ pbar .update (0 )
627+ pbar .refresh ()
628+ pbar .clear ()
629+ compute_session = await session .ComputeSession .get_or_create (
630+ image ,
631+ name = name ,
632+ )
633+ await asyncio .sleep (0.1 )
634+ return True
635+
602636 if compute_session .status == 'PENDING' :
603637 print_info ('Session ID {0} is enqueued for scheduling.'
604638 .format (name ))
605- return
639+ result = await display_kernel_pulling (compute_session )
640+ if not result :
641+ return
606642 elif compute_session .status == 'SCHEDULED' :
607643 print_info ('Session ID {0} is scheduled and about to be started.'
608644 .format (name ))
@@ -623,7 +659,9 @@ async def _run(session, idx, name, envs,
623659 elif compute_session .status == 'TIMEOUT' :
624660 print_info ('Session ID {0} is still on the job queue.'
625661 .format (name ))
626- return
662+ result = await display_kernel_pulling (compute_session )
663+ if not result :
664+ return
627665 elif compute_session .status in ('ERROR' , 'CANCELLED' ):
628666 print_fail ('Session ID {0} has an error during scheduling/startup or cancelled.'
629667 .format (name ))
0 commit comments