baodan/api/insurance/db/compat.py

58 lines
1.3 KiB
Python

"""兼容层模块
让自研代码既能独立运行,也能在 Dify 环境中运行。
自动检测环境并使用对应的数据库和 Redis 连接。
"""
import os
def _try_import_dify_db():
"""尝试导入 Dify 的数据库扩展。"""
try:
from extensions.ext_database import db
return db
except ImportError:
return None
def _try_import_dify_redis():
"""尝试导入 Dify 的 Redis 扩展。"""
try:
from extensions.ext_redis import redis_client
return redis_client
except ImportError:
return None
def _get_standalone_db():
"""获取独立部署的数据库实例。"""
from insurance.db.database import db
return db
def _get_standalone_redis():
"""获取独立部署的 Redis 客户端。"""
from insurance.db.redis import get_redis
return get_redis()
def is_standalone():
"""判断是否为独立部署模式。"""
return _try_import_dify_db() is None
# 初始化时尝试导入 Dify 扩展
_dify_db = _try_import_dify_db()
_dify_redis = _try_import_dify_redis()
# 如果 Dify 扩展不可用,使用独立部署的实现
if _dify_db is None:
db = _get_standalone_db()
else:
db = _dify_db
if _dify_redis is None:
redis_client = _get_standalone_redis()
else:
redis_client = _dify_redis