async def run_task(self) -> None:
self.last_run = <NUM_LIT:0.0><EOL>self.target = self.time() + self.DELAY<EOL>while self.running:<EOL><INDENT>try:<EOL><INDENT>now = self.time()<EOL>if now < self.target:<EOL><INDENT>sleep = self.target - now<EOL>await self.sleep(sleep)<EOL><DEDENT>elif self.last_run < self.target:<EOL><INDENT>Log.debug('<STR_LIT>', self.name)<EOL>self.last_run = self.time()<EOL>await self.run()<EOL>total = self.time() - self.last_run<EOL>Log.debug('<STR_LIT>',<EOL>self.name, total)<EOL><DEDENT>else:<EOL><INDENT>sleep = min(<NUM_LIT>, self.DELAY)<EOL>await self.sleep(sleep)<EOL><DEDENT><DEDENT>except CancelledError:<EOL><INDENT>Log.debug('<STR_LIT>', self.name)<EOL>raise<EOL><DEDENT>except Exception:<EOL><INDENT>Log.exception('<STR_LIT>', self.name)<EOL><DEDENT><DEDENT>
Execute the task inside the asyncio event loop after `DELAY`
        seconds.  Track the time it takes to run, and log when it starts/stops.
        If/when `reset()` is called, reset the wait time to `DELAY` seconds.