This commit is contained in:
liaibo
2025-12-06 16:47:17 +08:00
parent 15921bfeb7
commit 9ef8e06d67
75 changed files with 559237 additions and 93 deletions
+26
View File
@@ -0,0 +1,26 @@
from __future__ import annotations
import logging
import os
from typing import Any, Callable
logger = logging.getLogger(__name__)
def _env_flag(name: str) -> bool:
value = os.getenv(name)
if value is None:
return False
return value.strip().lower() in {"1", "true", "yes", "on"}
def dispatch_task(task: Callable[..., Any], *args: Any, **kwargs: Any) -> Any:
"""
根据环境变量决定直接执行任务还是通过 Celery delay。
本地开发默认走 eager,同步执行便于调试。
"""
eager = _env_flag("CELERY_TASK_ALWAYS_EAGER")
logger.info("dispatch_task task=%s eager=%s", getattr(task, "name", task.__name__), eager)
if _env_flag("CELERY_TASK_ALWAYS_EAGER"):
return task.apply(args=args, kwargs=kwargs)
return task.delay(*args, **kwargs)