diff --git a/.gitignore b/.gitignore index 7a88c62..963dcbf 100644 --- a/.gitignore +++ b/.gitignore @@ -36,8 +36,8 @@ qy-lty-admin/next-env.d.ts __pycache__/ *.py[cod] *.pyo -# env files -# qy_lty/.env +# env files(含密钥,禁止入库) +qy_lty/.env # logs qy_lty/logs/ # static files collected diff --git a/qy_lty/.env b/qy_lty/.env deleted file mode 100644 index 64b46b0..0000000 --- a/qy_lty/.env +++ /dev/null @@ -1,107 +0,0 @@ -SECRET_KEY=django-insecure-j63ZGygyiLWGqhZ-e3ZGH_HGfNVQgBkq*jjpYMz-QYqE46cuuA -DEBUG=True - -MYSQL_DATABASE_NAME=lty -MYSQL_DATABASE_USER=root -MYSQL_DATABASE_PASSWORD=123456 -MYSQL_DATABASE_HOST=localhost -MYSQL_DATABASE_PORT=3306 - -# POSTGRESQL_DATABASE_NAME=lty -# POSTGRESQL_DATABASE_USER=postgres -# POSTGRESQL_DATABASE_PASSWORD=123456 -# POSTGRESQL_DATABASE_HOST=localhost -# POSTGRESQL_DATABASE_PORT=5432 - -# 气元pg -POSTGRESQL_DATABASE_NAME=qy_lty -POSTGRESQL_DATABASE_USER=qy_lty -POSTGRESQL_DATABASE_PASSWORD=NfAfCvkad8L2 -POSTGRESQL_DATABASE_HOST=pgm-7xv4811oj11j86htzo.pg.rds.aliyuncs.com -POSTGRESQL_DATABASE_PORT=5432 - -# REDIS_LOCATION=redis://localhost:6379/0 -# REDIS_PASSWORD= - -# 气元redis -REDIS_LOCATION=redis://r-7xvat0vez5clwbzk5vpd.redis.rds.aliyuncs.com:6379/0 -REDIS_PASSWORD=vAhRnAA6VMco - -ALIYUN_SMS_ACCESS_KEY_ID=LTAI5t6ZXMo3SbKUg7YrK89m -ALIYUN_SMS_ACCESS_KEY_SECRET=ygDVmjIIAcFgXcaJP7hbiSwOr8hYur -ALIYUN_SMS_SIGN_NAME=广州气元科技 -ALIYUN_SMS_TEMPLATE_CODE=SMS_317100048 - -# 实际是火山的 -KIMI_API_KEY=846b6981-9954-4c58-bb39-63079393bdb8 -KIMI_BASE_URL=https://ark.cn-beijing.volces.com/api/v3/ - - -# 阿里云日志配置(气元账户) -ALIYUN_LOG_PROJECT=lty -ALIYUN_LOG_STORE=lty-backend -ALIYUN_LOG_ENDPOINT=cn-guangzhou.log.aliyuncs.com -ALIYUN_LOG_ACCESS_KEY_ID=LTAI5tFYGrgcAhscCdEUB9Te -ALIYUN_LOG_ACCESS_KEY_SECRET=YO7Bf3QDH4ErYCNvSssFkHseNsh8PP - -# 阿里云语音配置(气元账户) -ALIYUN_NLS_ACCESS_KEY_ID=LTAI5t6tnLjBK9edseDVH849 -ALIYUN_NLS_ACCESS_KEY_SECRET=DmiZyjnfQo03KalxYmELOfcDQUIrTX -ALIYUN_NLS_APP_ID=Gxf9gwGYOvUTjzYC - - -# 阿里云oss配置(气元账户) -ALIYUN_OSS_ACCESS_KEY_ID=LTAI5tL2aUarUR99h2kdKTss -ALIYUN_OSS_ACCESS_KEY_SECRET=62OUrzdty2oQPiPLLt0XTAbKvMT1sO -ALIYUN_OSS_BUCKET=lty-storage -ALIYUN_OSS_ENDPOINT=https://oss-cn-guangzhou.aliyuncs.com -ALIYUN_OSS_HOST=https://lty-storage.airlabs.art -ALIYUN_OSS_AUDIO_BASE_DIR=audio - -# 火山语音配置(风也账户,洛天依声音克隆) -AUDIO_SERVICE_HUOSHAN_APPID=5801394478 -AUDIO_SERVICE_HUOSHAN_ACCESS_TOKEN=8pNMhvG4H6VWecnYOBmzyLnribeHVhoj -AUDIO_SERVICE_HUOSHAN_CLUSTER=volcano_icl -AUDIO_SERVICE_HUOSHAN_VOICE_TYPE=S_PHQ1AVPl1 -AUDIO_SERVICE_HUOSHAN_STORAGE_DIR=audio -AUDIO_SERVICE_HUOSHAN_BASE_URL=https://lty-storage.airlabs.art - - -AUDIO_SERVICE_ALIYUN_API_KEY= -AUDIO_SERVICE_ALIYUN_API_SECRET= -AUDIO_SERVICE_TENCENT_API_KEY= -AUDIO_SERVICE_TENCENT_API_SECRET= - -# 阿里云VI配置 -ALIYUN_VI_ACCESS_KEY_ID=LTAI5tHXQGNyAws4eXB7ytYu -ALIYUN_VI_ACCESS_KEY_SECRET=EouZq22js1pmMwMmGep4PWXqJEy9DA -ALIYUN_VI_ENDPOINT=facebody.cn-shanghai.aliyuncs.com -ALIYUN_VI_REGION=cn-shanghai - -# # 火山引擎配置(风也账户) -# VOLCENGINE_APP_ID=67b59a4586198401ec980bf9 -# VOLCENGINE_APP_KEY=285a4b02b91f425eac74605e6f42178f -# VOLCENGINE_TOKEN_EXPIRE_TIME=2592000 - -# # 火山引擎RTC ak和sk配置(风也账户) -# VOLCENGINE_ACCESS_KEY=AKLTMGZmMGIxNTU4MjBlNDU2OWE0M2VmMmY2MjBlODkxNzQ -# VOLCENGINE_SECRET_KEY=WldJeU9XSXlNVFprWWpNd05HTmtNVGczTkdNMll6QXpNakEwTm1JM05qSQ== - -## 火山引擎配置(气元账户) -#VOLCENGINE_APP_ID=67f3951852477d017d1254d5 -#VOLCENGINE_APP_KEY=27d3197d38764205a4cd257df086325d -#VOLCENGINE_TOKEN_EXPIRE_TIME=2592000 - -## 火山引擎RTC ak和sk配置(气元账户) -#VOLCENGINE_ACCESS_KEY=AKLTNmVmNTU4NmEzNzFjNDYyYTk2OTZjMjMwYTljZGEwMjE -#VOLCENGINE_SECRET_KEY=TnpReFlqQTBaalUwT1RZNU5HSXhaamt3WlRBME5EQmtNVGc1WXpOallqYw== - - -## 火山引擎RTC ak和sk配置(气元账户) -VOLCENGINE_ACCESS_KEY=AKLTNmVmNTU4NmEzNzFjNDYyYTk2OTZjMjMwYTljZGEwMjE -VOLCENGINE_SECRET_KEY=TnpReFlqQTBaalUwT1RZNU5HSXhaamt3WlRBME5EQmtNVGc1WXpOallqYw== - -## 火山引擎配置(气元账户) -VOLCENGINE_APP_ID=68eb092fb8f0ac0173afe8c7 -VOLCENGINE_APP_KEY=8b43a113b59c47f3abd65bcd5ce8692d -VOLCENGINE_TOKEN_EXPIRE_TIME=2592000 \ No newline at end of file diff --git a/qy_lty/docs/修改记录.md b/qy_lty/docs/修改记录.md index 031614f..93518df 100644 --- a/qy_lty/docs/修改记录.md +++ b/qy_lty/docs/修改记录.md @@ -23,6 +23,27 @@ +### [2026-05-18] Redis 切换为火山引擎实例 + 修复 CHANNEL_LAYERS 不支持 ACL username + +原阿里云 Redis 实例(`r-7xvat0vez5clwbzk5vpd.redis.rds.aliyuncs.com:6379`)连接被远端 RST(10054),导致 `/api/v1/admin/login/` 等所有依赖 token / 缓存的接口报 `ConnectionError`。改用火山引擎 Redis 实例(`redis-shzlsczo52dft8mia.redis.volces.com:6379/3`,用户 `zyc`)。 + +切换过程中发现 `CHANNEL_LAYERS` 配置硬拼 URL 时只放了 password、没有 username,导致带 ACL username 的 Redis(如本次的火山实例)会拼出畸形 URL(`redis://:pwd@host` 缺 user)。改为直接消费完整 `REDIS_LOCATION`(已含 `zyc:Zyc188208@`),后续切换实例只改 .env 即可。 + +- **文件路径**: + - `.env`(**修改** — 旧 REDIS_LOCATION/PASSWORD 注释保留作为回滚参考;新 REDIS_LOCATION 含完整 `zyc:Zyc188208@` 凭据;REDIS_PASSWORD 仍保留 `Zyc188208` 以兼容 `django-redis` OPTIONS.PASSWORD) + - `qy_lty/settings.py`(**修改** — 第 519 行 CHANNEL_LAYERS hosts 由 `f"redis://:{config('REDIS_PASSWORD')}@{config('REDIS_LOCATION').replace('redis://', '')}"` 改为 `[config('REDIS_LOCATION')]`) +- **修改类型**: 配置切换 + 修复Bug +- **修改内容**: + 1. Redis 实例 URL 切换到火山引擎,库号由 `/0` 改为 `/3` + 2. CHANNEL_LAYERS hosts 不再二次拼接,直接读取完整 URL;不再丢失 ACL username +- **修改原因**: + - 阿里云 Redis 不可用(白名单 / 实例状态 / 网络出口任一原因均会触发 10054 RST),登录 / token / 缓存全线 500 + - channels_redis 接受标准 redis URL(含 `user:pass@`),原硬拼方式只能表达 password-only,遇到 ACL 模式实例无法登录通道层 +- **验证**: 重启 daphne 后启动日志 `Cache Status: OK`,延迟 296.67ms;HTTP 8000 监听正常 +- **回滚**: 取消 `.env` 中两行火山配置注释 → 取消阿里云两行注释;CHANNEL_LAYERS 改回原拼接(若回到不带 username 的实例可保留新写法,更通用) + +--- + ### [2026-05-13] 好感度系统 P2 阶段 — Service 层 + 管理端 API 落地 配套设计文档:[../../docs/好感度系统功能与规则设计.md](../../docs/好感度系统功能与规则设计.md) diff --git a/qy_lty/qy_lty/settings.py b/qy_lty/qy_lty/settings.py index 7b8634d..c8129e1 100644 --- a/qy_lty/qy_lty/settings.py +++ b/qy_lty/qy_lty/settings.py @@ -516,7 +516,7 @@ CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels_redis.core.RedisChannelLayer', 'CONFIG': { - "hosts": [f"redis://:{config('REDIS_PASSWORD')}@{config('REDIS_LOCATION').replace('redis://', '')}"], + "hosts": [config('REDIS_LOCATION')], }, }, }