From c4eaeb649943e9df4299d2dd89620d4e969e67e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Sun, 31 Aug 2025 01:33:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DCelery=E9=80=92=E5=BD=92?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除Django应用配置中的手动任务注册 - 使用Celery的imports配置确保任务模块被导入 - 避免在ready()方法中访问Celery应用 - 使用Celery的自动发现机制处理任务注册 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- apps/knowledge/apps.py | 35 ++++------------------------------- apps/ops/celery/__init__.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 31 deletions(-) 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' + ] +)