Files
mindfulness/server/app/worker.py
吕新雨 049995692d init
2026-01-28 20:50:17 +08:00

44 lines
1.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from __future__ import annotations
from celery import Celery
from app.core.config import get_settings
def _env_prefix(app_env: str) -> str:
"""
根据环境生成前缀:
- dev -> dev
- prod -> pro
说明Redis ACL 限制使用 `dev:*` / `pro:*`。
"""
return "dev" if app_env == "dev" else "pro"
settings = get_settings()
prefix = _env_prefix(settings.app_env)
# 关键:使用 Redis transport 的全局 key 前缀,确保所有 broker key 都在 ACL 允许范围内
broker_transport_options = {"global_keyprefix": f"{prefix}:"}
celery_app = Celery(
"mindfulness",
broker=settings.celery_broker_url,
backend=settings.celery_result_backend,
broker_transport_options=broker_transport_options,
)
# 默认不存结果(降低 Redis 占用)。如需结果存储,可在业务中显式开启并设置 TTL。
celery_app.conf.update(
task_ignore_result=True if not settings.celery_result_backend else False,
task_default_queue=f"{prefix}:celery",
task_default_exchange=f"{prefix}:celery",
task_default_routing_key=f"{prefix}:celery",
)
# 自动发现任务app/tasks 下的 shared_task
celery_app.autodiscover_tasks(["app.tasks"])