ssMerge branch 'pms_plugins'
This commit is contained in:
39
scheduler/management/commands/start_scheduler.py
Normal file
39
scheduler/management/commands/start_scheduler.py
Normal file
@@ -0,0 +1,39 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user