0.1.0
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user