40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
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)
|