feat(config): 添加代理超时配置选项 添加了多种场景的代理超时配置: - 默认超时:60秒 - 短任务超时:30秒(轮询、小图片下载) - 长任务超时:300秒(视频下载、大文件) - 生成任务超时:600秒(AI生成请求) refactor(services): 统一使用配置化的代理超时参数 将硬编码的超时值替换为配置文件中的常量: - 文件服务使用默认超时 - 聊天生成功能使用长任务超时 - 图片下载使用短任务超时 - 视频生成功能使用相应的默认、短、长超时配置 ```
36 lines
1.1 KiB
Python
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
|