@@ -1,5 +1,7 @@
|
||||
from pathlib import Path
|
||||
import os
|
||||
import sys
|
||||
from urllib.parse import urlsplit
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
@@ -12,6 +14,20 @@ def env(name: str, default: str | None = None) -> str | None:
|
||||
return os.getenv(name, default)
|
||||
|
||||
|
||||
def redis_url(name: str, database: int) -> str:
|
||||
"""本机运行时把 Docker 内部 Redis 主机名映射到已启动的本机 Redis。
|
||||
|
||||
容器/Linux 与其他显式配置保持原样;不读取或输出 URL 中的凭证。
|
||||
"""
|
||||
fallback = f"redis://127.0.0.1:6379/{database}"
|
||||
configured = env(name, fallback) or fallback
|
||||
if sys.platform == "darwin" and urlsplit(configured).hostname == "yingqing-redis":
|
||||
# Celery 自身也优先读取 CELERY_BROKER_URL 环境变量,只改 Django settings 不够。
|
||||
os.environ[name] = fallback
|
||||
return fallback
|
||||
return configured
|
||||
|
||||
|
||||
def env_bool(name: str, default: bool = False) -> bool:
|
||||
value = os.getenv(name)
|
||||
if value is None:
|
||||
@@ -191,12 +207,12 @@ CORS_ALLOW_CREDENTIALS = True
|
||||
CACHES = {
|
||||
"default": {
|
||||
"BACKEND": "django.core.cache.backends.redis.RedisCache",
|
||||
"LOCATION": env("REDIS_CACHE_URL", "redis://127.0.0.1:6379/0"),
|
||||
"LOCATION": redis_url("REDIS_CACHE_URL", 0),
|
||||
}
|
||||
}
|
||||
|
||||
CELERY_BROKER_URL = env("CELERY_BROKER_URL", "redis://127.0.0.1:6379/1")
|
||||
CELERY_RESULT_BACKEND = env("CELERY_RESULT_BACKEND", "redis://127.0.0.1:6379/2")
|
||||
CELERY_BROKER_URL = redis_url("CELERY_BROKER_URL", 1)
|
||||
CELERY_RESULT_BACKEND = redis_url("CELERY_RESULT_BACKEND", 2)
|
||||
# 本地端到端联调开关:true = 任务同进程内联执行,不碰共享 Redis 队列(线上 worker 拓扑不受影响)。
|
||||
# 生产/集群绝不开;test.py 恒为 True。自重排类任务(poll_free_video_task)在 eager 下会跳过重排防递归。
|
||||
CELERY_TASK_ALWAYS_EAGER = str(env("CELERY_TASK_ALWAYS_EAGER", "false")).lower() == "true"
|
||||
@@ -236,7 +252,7 @@ CREATION_AGENT_MAX_OUTPUT_TOKENS = env_int("CREATION_AGENT_MAX_OUTPUT_TOKENS", 1
|
||||
# 置空则不下发、跟随模型默认(= 开思考),仅在需要对比质量时才这么配。
|
||||
CREATION_AGENT_THINKING_MODE = (env("CREATION_AGENT_THINKING_MODE", "disabled") or "").strip()
|
||||
|
||||
REDIS_LOCK_URL = env("REDIS_LOCK_URL", "redis://127.0.0.1:6379/3")
|
||||
REDIS_LOCK_URL = redis_url("REDIS_LOCK_URL", 3)
|
||||
|
||||
def _tos_region() -> str:
|
||||
"""阿里云 OSS 的 S3 签名区域是 oss-cn-beijing 这种主机名前缀。火山 TOS 仍用 cn-shanghai。"""
|
||||
|
||||
Reference in New Issue
Block a user