修复Celery递归调用错误
- 移除Django应用配置中的手动任务注册 - 使用Celery的imports配置确保任务模块被导入 - 避免在ready()方法中访问Celery应用 - 使用Celery的自动发现机制处理任务注册 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
a5d1dda65f
commit
c4eaeb6499
@ -6,34 +6,7 @@ class KnowledgeConfig(AppConfig):
|
|||||||
name = 'knowledge'
|
name = 'knowledge'
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
"""在Django应用准备好后注册Celery任务"""
|
"""在Django应用准备好后,确保Celery任务能被发现"""
|
||||||
try:
|
# 不在这里手动注册任务,让Celery的自动发现机制处理
|
||||||
# 导入Celery应用
|
# 这样可以避免递归调用问题
|
||||||
from ops import celery_app
|
pass
|
||||||
|
|
||||||
# 注册高级学习任务
|
|
||||||
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}")
|
|
||||||
|
|||||||
@ -30,4 +30,16 @@ app.conf.update(
|
|||||||
key) for
|
key) for
|
||||||
key
|
key
|
||||||
in configs.keys()})
|
in configs.keys()})
|
||||||
|
# 配置任务自动发现
|
||||||
app.autodiscover_tasks(lambda: [app_config.split('.')[0] for app_config in settings.INSTALLED_APPS])
|
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'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user