修复拆机复刻json类型落库失败BUG,修补celery重试遗漏机制

This commit is contained in:
2026-06-18 10:22:42 +08:00
parent e8ac763f9c
commit 3453a6445c
3 changed files with 135 additions and 46 deletions
@@ -77,13 +77,29 @@ async def _run_video_prompt(project_id: str, step_id: str | None = None):
if celery_app:
@celery_app.task(name="hot_opening.start_image_prompt_optimize", bind=True, max_retries=3, default_retry_delay=30)
def start_image_prompt_optimize(self, project_id: str, step_id: str | None = None):
"""手动触发后的图片 AI 提词任务。"""
return run_async(_run_image_prompt(project_id, step_id))
"""手动触发后的图片 AI 提词任务。
max_retries 只有在显式 self.retry() 时才会生效。
这里仅兜底 Celery 包装层 / DB commit / Redis registry 等未被 service 捕获的异常;
service 内部已经落库为业务失败的情况不会抛出异常,也不会重复 retry。
"""
try:
return run_async(_run_image_prompt(project_id, step_id))
except Exception as exc:
raise self.retry(exc=exc) from exc
@celery_app.task(name="hot_opening.start_video_prompt_optimize", bind=True, max_retries=3, default_retry_delay=30)
def start_video_prompt_optimize(self, project_id: str, step_id: str | None = None):
"""手动触发后的视频 AI 提词任务。"""
return run_async(_run_video_prompt(project_id, step_id))
"""手动触发后的视频 AI 提词任务。
max_retries 只有在显式 self.retry() 时才会生效。
这里仅兜底 Celery 包装层 / DB commit / Redis registry 等未被 service 捕获的异常;
service 内部已经落库为业务失败的情况不会抛出异常,也不会重复 retry。
"""
try:
return run_async(_run_video_prompt(project_id, step_id))
except Exception as exc:
raise self.retry(exc=exc) from exc
else:
class _DisabledTask:
def delay(self, *args: Any, **kwargs: Any):