✨ add feat
This commit is contained in:
parent
39e3fe76ea
commit
cadbab7541
@ -16,8 +16,10 @@ from pathlib import Path
|
|||||||
from PIL import Image
|
from PIL import Image
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from baidu_bos_manager import get_bos_manager
|
# Optional external managers (BOS/Mongo) are disabled in minimal setup
|
||||||
from mongodb_manager import get_mongodb_manager
|
# Previously:
|
||||||
|
# from baidu_bos_manager import get_bos_manager
|
||||||
|
# from mongodb_manager import get_mongodb_manager
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -31,8 +33,9 @@ class OptimizedFileHandler:
|
|||||||
SUPPORTED_IMAGE_FORMATS = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'}
|
SUPPORTED_IMAGE_FORMATS = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'}
|
||||||
|
|
||||||
def __init__(self, local_storage_dir=None):
|
def __init__(self, local_storage_dir=None):
|
||||||
self.bos_manager = get_bos_manager()
|
# In minimal setup, BOS and MongoDB are not used
|
||||||
self.mongodb_manager = get_mongodb_manager()
|
self.bos_manager = None
|
||||||
|
self.mongodb_manager = None
|
||||||
self.temp_files = set() # 跟踪临时文件
|
self.temp_files = set() # 跟踪临时文件
|
||||||
self.local_storage_dir = local_storage_dir or tempfile.gettempdir()
|
self.local_storage_dir = local_storage_dir or tempfile.gettempdir()
|
||||||
|
|
||||||
@ -126,14 +129,14 @@ class OptimizedFileHandler:
|
|||||||
}
|
}
|
||||||
|
|
||||||
# 如果有BOS管理器,也上传到BOS
|
# 如果有BOS管理器,也上传到BOS
|
||||||
if hasattr(self, 'bos_manager') and self.bos_manager:
|
if self.bos_manager:
|
||||||
bos_key = f"images/memory_{file_id}_{filename}"
|
bos_key = f"images/memory_{file_id}_{filename}"
|
||||||
bos_result = self._upload_to_bos_from_memory(file_content, bos_key, filename)
|
bos_result = self._upload_to_bos_from_memory(file_content, bos_key, filename)
|
||||||
if bos_result:
|
if bos_result:
|
||||||
metadata["bos_key"] = bos_key
|
metadata["bos_key"] = bos_key
|
||||||
metadata["bos_url"] = bos_result["url"]
|
metadata["bos_url"] = bos_result["url"]
|
||||||
|
|
||||||
if hasattr(self, 'mongodb_manager') and self.mongodb_manager:
|
if self.mongodb_manager:
|
||||||
self.mongodb_manager.store_file_metadata(metadata=metadata)
|
self.mongodb_manager.store_file_metadata(metadata=metadata)
|
||||||
|
|
||||||
logger.info(f"✅ 内存处理图像成功: {filename} ({len(file_content)} bytes)")
|
logger.info(f"✅ 内存处理图像成功: {filename} ({len(file_content)} bytes)")
|
||||||
@ -192,7 +195,7 @@ class OptimizedFileHandler:
|
|||||||
}
|
}
|
||||||
|
|
||||||
# 如果有BOS管理器,也上传到BOS
|
# 如果有BOS管理器,也上传到BOS
|
||||||
if hasattr(self, 'bos_manager') and self.bos_manager:
|
if self.bos_manager:
|
||||||
bos_key = f"images/temp_{file_id}_{filename}"
|
bos_key = f"images/temp_{file_id}_{filename}"
|
||||||
bos_result = self.bos_manager.upload_file(temp_path, bos_key)
|
bos_result = self.bos_manager.upload_file(temp_path, bos_key)
|
||||||
if bos_result:
|
if bos_result:
|
||||||
@ -200,7 +203,7 @@ class OptimizedFileHandler:
|
|||||||
metadata["bos_url"] = bos_result["url"]
|
metadata["bos_url"] = bos_result["url"]
|
||||||
|
|
||||||
# 存储元数据到MongoDB
|
# 存储元数据到MongoDB
|
||||||
if hasattr(self, 'mongodb_manager') and self.mongodb_manager:
|
if self.mongodb_manager:
|
||||||
self.mongodb_manager.store_file_metadata(metadata=metadata)
|
self.mongodb_manager.store_file_metadata(metadata=metadata)
|
||||||
|
|
||||||
logger.info(f"✅ 临时文件处理图像成功: {filename} ({file_stat.st_size} bytes)")
|
logger.info(f"✅ 临时文件处理图像成功: {filename} ({file_stat.st_size} bytes)")
|
||||||
@ -282,6 +285,9 @@ class OptimizedFileHandler:
|
|||||||
|
|
||||||
with self.temp_file_context(suffix=ext, delete_on_exit=False) as temp_path:
|
with self.temp_file_context(suffix=ext, delete_on_exit=False) as temp_path:
|
||||||
# 从BOS下载文件
|
# 从BOS下载文件
|
||||||
|
if not self.bos_manager:
|
||||||
|
logger.warning("BOS manager is not available; skip download.")
|
||||||
|
return None
|
||||||
success = self.bos_manager.download_file(bos_key, temp_path)
|
success = self.bos_manager.download_file(bos_key, temp_path)
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
@ -298,15 +304,14 @@ class OptimizedFileHandler:
|
|||||||
def _upload_to_bos_from_memory(self, content: bytes, bos_key: str, filename: str) -> Optional[Dict[str, Any]]:
|
def _upload_to_bos_from_memory(self, content: bytes, bos_key: str, filename: str) -> Optional[Dict[str, Any]]:
|
||||||
"""从内存直接上传到BOS"""
|
"""从内存直接上传到BOS"""
|
||||||
try:
|
try:
|
||||||
|
if not self.bos_manager:
|
||||||
|
return None
|
||||||
# 创建临时文件用于上传
|
# 创建临时文件用于上传
|
||||||
with self.temp_file_context() as temp_path:
|
with self.temp_file_context() as temp_path:
|
||||||
with open(temp_path, 'wb') as temp_file:
|
with open(temp_path, 'wb') as temp_file:
|
||||||
temp_file.write(content)
|
temp_file.write(content)
|
||||||
|
|
||||||
# 上传到BOS
|
|
||||||
result = self.bos_manager.upload_file(temp_path, bos_key)
|
result = self.bos_manager.upload_file(temp_path, bos_key)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"❌ 内存上传到BOS失败: {filename}, {e}")
|
logger.error(f"❌ 内存上传到BOS失败: {filename}, {e}")
|
||||||
return None
|
return None
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
torch>=2.0.0
|
torch>=2.0.0
|
||||||
torchvision>=0.15.0
|
|
||||||
transformers>=4.30.0
|
transformers>=4.30.0
|
||||||
accelerate>=0.20.0
|
accelerate>=0.20.0
|
||||||
faiss-cpu>=1.7.4
|
faiss-cpu>=1.7.4
|
||||||
@ -9,3 +8,4 @@ tqdm>=4.65.0
|
|||||||
flask>=2.3.0
|
flask>=2.3.0
|
||||||
werkzeug>=2.3.0
|
werkzeug>=2.3.0
|
||||||
requests>=2.31.0
|
requests>=2.31.0
|
||||||
|
safetensors>=0.4.0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user