增加组装推送消息的逻辑

This commit is contained in:
mark.tian
2025-12-08 09:49:36 +08:00
parent 038363a17e
commit 43ff4aa5f9
6 changed files with 1096 additions and 53 deletions

105
test_redis.py Normal file
View File

@@ -0,0 +1,105 @@
#!/usr/bin/env python3
"""
Redis 连接测试脚本
"""
import os
import sys
import asyncio
# 添加项目根目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from app.config import settings
from app.logger import get_logger
logger = get_logger("redis_test")
async def test_redis_connection():
"""测试 Redis 连接"""
logger.info("🔴 测试 Redis 连接...")
try:
import redis.asyncio as redis
# 创建 Redis 客户端
redis_client = redis.from_url(settings.celery_broker_url)
# 测试连接
await redis_client.ping()
logger.info("✅ Redis 连接成功")
# 测试基本操作
test_key = "test_connection"
test_value = "Hello Redis!"
await redis_client.set(test_key, test_value, ex=60) # 设置60秒过期
retrieved_value = await redis_client.get(test_key)
if retrieved_value == test_value:
logger.info("✅ Redis 读写操作正常")
else:
logger.warning("⚠️ Redis 读写操作异常")
# 清理测试数据
await redis_client.delete(test_key)
# 关闭连接
await redis_client.close()
return True
except Exception as e:
logger.error(f"❌ Redis 连接失败: {e}")
return False
async def test_celery_redis():
"""测试 Celery 相关的 Redis 操作"""
logger.info("🌿 测试 Celery Redis 配置...")
try:
import redis.asyncio as redis
# 测试 Broker 连接
broker_client = redis.from_url(settings.celery_broker_url)
await broker_client.ping()
logger.info(f"✅ Celery Broker (Redis) 连接成功: {settings.celery_broker_url}")
# 测试 Backend 连接
backend_client = redis.from_url(settings.celery_result_backend)
await backend_client.ping()
logger.info(f"✅ Celery Backend (Redis) 连接成功: {settings.celery_result_backend}")
# 关闭连接
await broker_client.close()
await backend_client.close()
return True
except Exception as e:
logger.error(f"❌ Celery Redis 测试失败: {e}")
return False
async def main():
"""主函数"""
logger.info("🧪 开始 Redis 连接测试...")
# 显示配置信息
logger.info(f"📡 Celery Broker: {settings.celery_broker_url}")
logger.info(f"💾 Celery Backend: {settings.celery_result_backend}")
# 测试基础连接
basic_ok = await test_redis_connection()
# 测试 Celery 连接
celery_ok = await test_celery_redis()
if basic_ok and celery_ok:
logger.info("🎉 所有 Redis 测试通过!")
return 0
else:
logger.error("❌ Redis 测试失败")
return 1
if __name__ == "__main__":
sys.exit(asyncio.run(main()))