Source code for simstack.core.services.stop_check_service
import asyncio
import logging
from pathlib import Path
from simstack.core.context import context
from simstack.models.parameters import Resource
from simstack.models.runner_model import RunnerEventEnum
from simstack.core.services.base_service import BaseService
logger = logging.getLogger("NodeRunner")
[docs]
class StopCheckService(BaseService):
"""Service that checks for STOP file and triggers shutdown"""
def __init__(self, resource: Resource, interval: int, shutdown_event: asyncio.Event):
super().__init__("StopCheck", resource, interval, shutdown_event=shutdown_event)
[docs]
async def execute(self):
# Check for STOP file
for path in [context.config.workdir, context.config.project_root]:
stop_file = Path(path) / "STOP"
if stop_file.exists():
await self.write_resource_event(RunnerEventEnum.SHUTDOWN, message="STOP file found")
logger.info(f"STOP file found at {stop_file}, signaling shutdown...")
if self._shutdown_event:
self._shutdown_event.set()
return