diff --git a/datasource/flask_api_source.py b/datasource/flask_api_source.py index affb542..254ab0e 100644 --- a/datasource/flask_api_source.py +++ b/datasource/flask_api_source.py @@ -109,7 +109,12 @@ class FlaskAPIDataSource: print(f"✗ API请求失败: {response.status_code} - {response.text[:100]}") return None - data = response.json() + # 尝试解析 JSON(支持 zstd 响应) + try: + data = response.json() + except (json.JSONDecodeError, requests.exceptions.JSONDecodeError): + # 如果 response.json() 失败,手动解析 + data = json.loads(response.text) # 检查错误 if 'error' in data: diff --git a/datasource/flask_server.py b/datasource/flask_server.py index 7c6a94b..d0697d1 100644 --- a/datasource/flask_server.py +++ b/datasource/flask_server.py @@ -40,6 +40,7 @@ load_dotenv() from flask import Flask, request, jsonify from flask_cors import CORS +from flask_compress import Compress import pandas as pd from datasource.universal_fetcher import UniversalDataFetcher @@ -52,6 +53,7 @@ from datasource.asset_type_detector import AssetTypeDetector, AssetType app = Flask(__name__) CORS(app) # 启用跨域支持 +Compress(app) # 启用 gzip 压缩 # 全局数据获取器实例 fetcher: Optional[UniversalDataFetcher] = None diff --git a/requirements.txt b/requirements.txt index 3a05503..f97ae96 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,7 @@ pysocks>=1.7.0 # ==================== Web服务 ==================== flask>=3.0.0 flask-cors>=4.0.0 +flask-compress>=1.14 # ==================== 进度条 ==================== tqdm>=4.65.0 diff --git a/strategies/rotation/strategy.py b/strategies/rotation/strategy.py index cf6b103..5b1ca40 100644 --- a/strategies/rotation/strategy.py +++ b/strategies/rotation/strategy.py @@ -121,7 +121,8 @@ class RotationStrategy(StrategyBase): raise ValueError("配置中未找到 code_list") # 获取 Flask API 地址 - flask_api_url = self.config.get('flask_api_url') + flask_api_config = self.config.get('flask_api', {}) + flask_api_url = flask_api_config.get('url') if flask_api_config.get('enabled') else None if use_flask_api: # 使用 Flask API 服务获取数据(远程调用)