Files
xingrin/backend/apps/engine/apps.py

33 lines
1.1 KiB
Python
Raw Normal View History

2025-12-12 18:04:57 +08:00
import os
from django.apps import AppConfig
class EngineConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apps.engine'
verbose_name = '扫描引擎'
def ready(self):
"""应用就绪时启动定时调度器"""
# 只在主进程中启动调度器(避免 autoreload 重复启动)
# 检查是否在 runserver 的 autoreload 子进程中
if os.environ.get('RUN_MAIN') == 'true' or not self._is_runserver():
# 只在 Server 容器中启动调度器Worker 容器不需要)
if not os.environ.get('SERVER_URL'): # Worker 容器有 SERVER_URL
self._start_scheduler()
def _is_runserver(self):
"""检查是否通过 runserver 启动"""
import sys
return 'runserver' in sys.argv
def _start_scheduler(self):
"""启动调度器"""
try:
from apps.engine.scheduler import start_scheduler
start_scheduler()
except Exception as e:
import logging
logger = logging.getLogger(__name__)
logger.warning(f"调度器启动失败: {e}")