mirror of
https://github.com/yyhuni/xingrin.git
synced 2026-01-31 11:46:16 +08:00
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
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}")
|