@@ -403,9 +403,14 @@ async def __aexit__(
403403 try :
404404 logger .debug ("Shutting down kernel" )
405405 try :
406- await self ._post (f"api/kernels/{ self ._kernel_id } /shutdown" )
406+ async with aiohttp .ClientSession () as session :
407+ async with session .post (
408+ f"{ self ._base_url } /api/kernels/{ self ._kernel_id } /shutdown" ,
409+ params = {"token" : self ._token },
410+ ) as response :
411+ response .raise_for_status ()
407412 except Exception as e :
408- logger .warning (f"Failed to gracefully shutdown kernel via API: { e } " )
413+ logger .warning (f"Failed to gracefully shutdown kernel via API: { e } " )
409414 self ._kernel_id = None
410415 except Exception :
411416 logger .exception ("Failed to shutdown kernel" )
@@ -687,7 +692,7 @@ async def get_kernel_state(self) -> KernelState:
687692 response .raise_for_status ()
688693 kernel_info = await response .json ()
689694
690- return t .cast (KernelState , kernel_info ["execution_state" ])
695+ return t .cast (" KernelState" , kernel_info ["execution_state" ])
691696
692697 async def busy (self ) -> bool :
693698 """Check if the kernel is busy executing code."""
@@ -724,3 +729,23 @@ async def restart(self) -> None:
724729 response .raise_for_status ()
725730
726731 logger .debug (f"Kernel { self ._kernel_id } restarted" )
732+
733+
734+ async def cleanup_routine () -> None :
735+ """Perform cleanup of Docker resources."""
736+ try :
737+ client = aiodocker .Docker ()
738+ # Clean up any dangling containers
739+ containers = await client .containers .list (all = True )
740+ for container in containers :
741+ container_info = await container .show ()
742+ if container_info .get ("State" , {}).get ("Status" ) == "exited" :
743+ try :
744+ await container .delete (force = True )
745+ logger .debug (f"Cleaned up exited container { container_info ['Id' ][:12 ]} " )
746+ except Exception as e :
747+ logger .debug (f"Could not clean up container: { e } " )
748+ await client .close ()
749+ logger .debug ("Cleanup routine completed" )
750+ except Exception as e :
751+ logger .warning (f"Cleanup routine failed: { e } " )
0 commit comments