import asyncio
from django.core.management.base import BaseCommand
from scheduler.apps import scheduler_instance
from scheduler.tasks import load_tasks_to_scheduler


class Command(BaseCommand):
    help = "Запуск планировщика задач"

    def handle(self, *args, **kwargs):
        """
        Создаёт новый event loop, запускает планировщик и загружает задачи.
        """
        try:
            print("Проверка состояния перед запуском:")
            print(f"Scheduler instance: {scheduler_instance}")

            # Создаём новый event loop
            loop = asyncio.new_event_loop()
            asyncio.set_event_loop(loop)

            # Устанавливаем event loop в планировщик
            scheduler_instance.configure(event_loop=loop)

            # Запускаем планировщик
            scheduler_instance.start()

            # Загружаем задачи
            load_tasks_to_scheduler(scheduler_instance)

            self.stdout.write(self.style.SUCCESS("Планировщик успешно запущен."))

            # Удерживаем цикл событий
            loop.run_forever()
        except KeyboardInterrupt:
            self.stdout.write(self.style.WARNING("Остановка планировщика."))
        finally:
            # Завершаем работу планировщика
            scheduler_instance.shutdown(wait=False)
