修复celery启动BUG稳定引入
This commit is contained in:
@@ -10,6 +10,22 @@ from app.tasks.async_runner import close_loop, run_async
|
||||
logger = logging.getLogger("video_gen")
|
||||
|
||||
|
||||
# 显式注册所有 Celery 任务模块,避免新增任务文件后 worker 启动时未注册任务。
|
||||
# 不再依赖 app.tasks.__init__ 内部 import,也不再依赖 autodiscover_tasks。
|
||||
CELERY_TASK_IMPORTS = (
|
||||
"app.tasks.generation_create_tasks",
|
||||
"app.tasks.generation_poll_tasks",
|
||||
"app.tasks.generation_download_tasks",
|
||||
"app.tasks.generation_recovery_tasks",
|
||||
"app.tasks.hot_opening_replicate_tasks",
|
||||
"app.tasks.shot_replicate_tasks",
|
||||
"app.tasks.shot_replicate_flow_tasks",
|
||||
"app.tasks.module_async_recovery_tasks",
|
||||
"app.tasks.user_oauth_tasks",
|
||||
"app.tasks.cleanup",
|
||||
)
|
||||
|
||||
|
||||
def _derive_redis_db(url: str, db_no: int) -> str:
|
||||
if not url:
|
||||
return url
|
||||
@@ -24,10 +40,11 @@ broker_url = settings.CELERY_BROKER_URL or (_derive_redis_db(settings.REDIS_URL,
|
||||
backend_url = settings.CELERY_RESULT_BACKEND or (_derive_redis_db(settings.REDIS_URL, 2) if settings.REDIS_URL else "")
|
||||
|
||||
if broker_url:
|
||||
celery_app = Celery("videogen")
|
||||
celery_app = Celery("videogen", include=CELERY_TASK_IMPORTS)
|
||||
celery_app.conf.update(
|
||||
broker_url=broker_url,
|
||||
result_backend=backend_url or broker_url,
|
||||
imports=CELERY_TASK_IMPORTS,
|
||||
task_serializer="json",
|
||||
accept_content=["json"],
|
||||
result_serializer="json",
|
||||
@@ -60,10 +77,10 @@ if broker_url:
|
||||
"generation.recover_download_tasks_once": {"queue": "gen_result_download"},
|
||||
"generation.recover_generation_tasks_once": {"queue": "gen_result_download"},
|
||||
"module_async.recover_module_async_tasks_once": {"queue": "gen_result_download"},
|
||||
"user_oauth.update_oauth_accounts": {"queue": "default"},
|
||||
"app.tasks.cleanup.*": {"queue": "default"},
|
||||
},
|
||||
)
|
||||
celery_app.autodiscover_tasks(["app.tasks"])
|
||||
else:
|
||||
celery_app = None
|
||||
|
||||
@@ -164,4 +181,4 @@ def on_worker_process_shutdown(**kwargs):
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
close_loop()
|
||||
close_loop()
|
||||
Reference in New Issue
Block a user