Files
mnote/wolai-backend/app/workers/utils.py
T
2025-12-06 16:47:17 +08:00

27 lines
818 B
Python

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)