ai_v/services/file_service.py
公司git 7172f3ab04 ```
feat(config): 添加代理超时配置选项

添加了多种场景的代理超时配置:
- 默认超时:60秒
- 短任务超时:30秒(轮询、小图片下载)
- 长任务超时:300秒(视频下载、大文件)
- 生成任务超时:600秒(AI生成请求)

refactor(services): 统一使用配置化的代理超时参数

将硬编码的超时值替换为配置文件中的常量:
- 文件服务使用默认超时
- 聊天生成功能使用长任务超时
- 图片下载使用短任务超时
- 视频生成功能使用相应的默认、短、长超时配置
```
2026-02-02 17:05:31 +08:00

36 lines
1.1 KiB
Python

import os
import uuid
import time
import requests
from urllib.parse import quote
from werkzeug.utils import secure_filename
from config import Config
from extensions import s3_client
from utils import get_proxied_url
def handle_file_uploads(files):
"""处理文件上传到 MinIO"""
img_urls = []
for f in files:
ext = os.path.splitext(f.filename)[1]
filename = f"{uuid.uuid4().hex}{ext}"
s3_client.upload_fileobj(
f, Config.MINIO["bucket"], filename,
ExtraArgs={"ContentType": f.content_type}
)
img_urls.append(f"{Config.MINIO['public_url']}{quote(filename)}")
return img_urls
def get_remote_file_stream(url):
"""获取远程文件的流"""
req = requests.get(get_proxied_url(url), stream=True, timeout=Config.PROXY_TIMEOUT_DEFAULT)
req.raise_for_status()
headers = {}
if req.headers.get('Content-Type'):
headers['Content-Type'] = req.headers['Content-Type']
else:
headers['Content-Type'] = 'application/octet-stream'
return req, headers