- 在knowledge/apps.py的ready()方法中注册Celery任务 - 移除ops/__init__.py中的直接导入,避免循环依赖 - 简化tasks/__init__.py,使用延迟导入 - 解决"Apps aren't loaded yet"错误 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
from django.apps import AppConfig
|
|
|
|
|
|
class KnowledgeConfig(AppConfig):
|
|
default_auto_field = 'django.db.models.BigAutoField'
|
|
name = 'knowledge'
|
|
|
|
def ready(self):
|
|
"""在Django应用准备好后注册Celery任务"""
|
|
try:
|
|
# 导入Celery应用
|
|
from ops import celery_app
|
|
|
|
# 注册高级学习任务
|
|
try:
|
|
from knowledge.tasks.advanced_learning import (
|
|
advanced_learning_by_document,
|
|
batch_advanced_learning
|
|
)
|
|
celery_app.register_task(advanced_learning_by_document)
|
|
celery_app.register_task(batch_advanced_learning)
|
|
print("✅ Advanced learning tasks registered via app config")
|
|
except ImportError as e:
|
|
print(f"❌ Failed to register advanced learning tasks: {e}")
|
|
|
|
# 注册媒体学习任务
|
|
try:
|
|
from knowledge.tasks.media_learning import (
|
|
media_learning_by_document,
|
|
media_learning_batch
|
|
)
|
|
celery_app.register_task(media_learning_by_document)
|
|
celery_app.register_task(media_learning_batch)
|
|
print("✅ Media learning tasks registered via app config")
|
|
except ImportError as e:
|
|
print(f"❌ Failed to register media learning tasks: {e}")
|
|
|
|
except Exception as e:
|
|
print(f"⚠️ Failed to register tasks via app config: {e}")
|