diff --git a/apps/knowledge/apps.py b/apps/knowledge/apps.py index 4f1473de..0c862627 100644 --- a/apps/knowledge/apps.py +++ b/apps/knowledge/apps.py @@ -6,34 +6,7 @@ class KnowledgeConfig(AppConfig): 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}") + """在Django应用准备好后,确保Celery任务能被发现""" + # 不在这里手动注册任务,让Celery的自动发现机制处理 + # 这样可以避免递归调用问题 + pass diff --git a/apps/ops/celery/__init__.py b/apps/ops/celery/__init__.py index 53dac8cc..0c9f374d 100644 --- a/apps/ops/celery/__init__.py +++ b/apps/ops/celery/__init__.py @@ -30,4 +30,16 @@ app.conf.update( key) for key in configs.keys()}) +# 配置任务自动发现 app.autodiscover_tasks(lambda: [app_config.split('.')[0] for app_config in settings.INSTALLED_APPS]) + +# 确保任务模块被导入 +app.conf.update( + imports=[ + 'knowledge.tasks.advanced_learning', + 'knowledge.tasks.media_learning', + 'knowledge.tasks.embedding', + 'knowledge.tasks.generate', + 'knowledge.tasks.sync' + ] +)