26 lines
668 B
Python
26 lines
668 B
Python
from __future__ import annotations
|
|
|
|
import asyncio
|
|
import logging
|
|
|
|
from backend.features.operations.service import OperationsService
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
async def run_operations_scheduler(
|
|
service: OperationsService, stop: asyncio.Event
|
|
) -> None:
|
|
while not stop.is_set():
|
|
try:
|
|
await asyncio.to_thread(service.tick)
|
|
except Exception:
|
|
logger.exception(
|
|
"Operations scheduler tick failed",
|
|
extra={"event": "operations.scheduler.failed"},
|
|
)
|
|
try:
|
|
await asyncio.wait_for(stop.wait(), timeout=5)
|
|
except TimeoutError:
|
|
pass
|