a
This commit is contained in:
parent
dc7ebc8c16
commit
8e58443510
|
|
@ -102,16 +102,23 @@ logger = logging.getLogger(__name__)
|
||||||
logger.info(f"日志系统已初始化,日志文件: {log_file}")
|
logger.info(f"日志系统已初始化,日志文件: {log_file}")
|
||||||
logger.info(f"日志级别: {os.getenv('LOG_LEVEL', 'INFO')}")
|
logger.info(f"日志级别: {os.getenv('LOG_LEVEL', 'INFO')}")
|
||||||
|
|
||||||
# 检查 aioredis 是否可用
|
# 检查 redis-py 是否可用(redis-py 4.2+ 同时支持同步和异步,可替代aioredis)
|
||||||
try:
|
try:
|
||||||
import aioredis
|
import redis
|
||||||
logger.info(f"✓ aioredis 已安装 (版本: {aioredis.__version__ if hasattr(aioredis, '__version__') else '未知'})")
|
# 检查是否是 redis-py 4.2+(支持异步)
|
||||||
|
if hasattr(redis, 'asyncio'):
|
||||||
|
logger.info(f"✓ redis-py 已安装 (版本: {redis.__version__ if hasattr(redis, '__version__') else '未知'}),支持同步和异步客户端")
|
||||||
|
logger.info(f" - redis.Redis: 同步客户端(用于config_manager)")
|
||||||
|
logger.info(f" - redis.asyncio.Redis: 异步客户端(用于trading_system,可替代aioredis)")
|
||||||
|
else:
|
||||||
|
logger.warning("⚠ redis-py 版本可能过低,建议升级到 4.2+ 以获得异步支持")
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
import sys
|
import sys
|
||||||
logger.warning("⚠ aioredis 未安装,Redis/Valkey 缓存将不可用")
|
logger.warning("⚠ redis-py 未安装,Redis/Valkey 缓存将不可用")
|
||||||
logger.warning(f" Python 路径: {sys.executable}")
|
logger.warning(f" Python 路径: {sys.executable}")
|
||||||
logger.warning(f" 导入错误: {e}")
|
logger.warning(f" 导入错误: {e}")
|
||||||
logger.warning(f" 提示: 请运行 'pip install aioredis==2.0.1' 安装 aioredis")
|
logger.warning(f" 提示: 请运行 'pip install redis>=4.2.0' 安装 redis-py")
|
||||||
|
logger.warning(f" 注意: redis-py 4.2+ 同时支持同步和异步,无需安装 aioredis")
|
||||||
logger.warning(f" 或者运行 'pip install -r backend/requirements.txt' 安装所有依赖")
|
logger.warning(f" 或者运行 'pip install -r backend/requirements.txt' 安装所有依赖")
|
||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
|
|
|
||||||
|
|
@ -223,7 +223,6 @@ class ConfigManager:
|
||||||
self._redis_client.ping()
|
self._redis_client.ping()
|
||||||
except:
|
except:
|
||||||
self._redis_connected = False
|
self._redis_connected = False
|
||||||
return
|
|
||||||
|
|
||||||
# 从数据库加载配置(仅在Redis不可用或Redis中没有数据时)
|
# 从数据库加载配置(仅在Redis不可用或Redis中没有数据时)
|
||||||
configs = TradingConfig.get_all()
|
configs = TradingConfig.get_all()
|
||||||
|
|
@ -245,11 +244,21 @@ class ConfigManager:
|
||||||
def get(self, key, default=None):
|
def get(self, key, default=None):
|
||||||
"""获取配置值"""
|
"""获取配置值"""
|
||||||
# 1. 优先从Redis缓存读取(最新)
|
# 1. 优先从Redis缓存读取(最新)
|
||||||
|
<<<<<<< Current (Your changes)
|
||||||
redis_value = self._get_from_redis(key)
|
redis_value = self._get_from_redis(key)
|
||||||
if redis_value is not None:
|
if redis_value is not None:
|
||||||
# 同时更新本地缓存
|
# 同时更新本地缓存
|
||||||
self._cache[key] = redis_value
|
self._cache[key] = redis_value
|
||||||
return redis_value
|
return redis_value
|
||||||
|
=======
|
||||||
|
# 注意:只在Redis连接正常时尝试读取,避免频繁连接失败
|
||||||
|
if self._redis_connected and self._redis_client:
|
||||||
|
redis_value = self._get_from_redis(key)
|
||||||
|
if redis_value is not None:
|
||||||
|
# 同时更新本地缓存
|
||||||
|
self._cache[key] = redis_value
|
||||||
|
return redis_value
|
||||||
|
>>>>>>> Incoming (Background Agent changes)
|
||||||
|
|
||||||
# 2. 从本地缓存读取
|
# 2. 从本地缓存读取
|
||||||
if key in self._cache:
|
if key in self._cache:
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,10 @@ def _get_trading_config():
|
||||||
"""获取交易配置(支持动态重载,优先从Redis读取最新值)"""
|
"""获取交易配置(支持动态重载,优先从Redis读取最新值)"""
|
||||||
if _config_manager:
|
if _config_manager:
|
||||||
# 从Redis重新加载配置(轻量级,只从Redis读取,不查数据库)
|
# 从Redis重新加载配置(轻量级,只从Redis读取,不查数据库)
|
||||||
|
<<<<<<< Current (Your changes)
|
||||||
|
=======
|
||||||
|
# 注意:如果Redis不可用或没有数据,reload_from_redis()会保持现有缓存,不会触发数据库加载
|
||||||
|
>>>>>>> Incoming (Background Agent changes)
|
||||||
_config_manager.reload_from_redis()
|
_config_manager.reload_from_redis()
|
||||||
return _config_manager.get_trading_config()
|
return _config_manager.get_trading_config()
|
||||||
# 回退到默认配置
|
# 回退到默认配置
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user