- 新增 Flask 服务提供统一 HTTP 接口 - 支持 6 个 API 端点:health、asset-type、ohlcv、batch、supported-codes - 集成 SSH 隧道自动管理(环境变量配置) - 提供一键启动脚本 start_flask_server.sh - 支持 CORS 跨域访问 - 完善的错误处理和响应格式化
128 lines
3.7 KiB
Bash
Executable File
128 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Flask API 服务启动脚本
|
|
# =====================
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${GREEN}Universal Data Fetcher API 服务启动脚本${NC}"
|
|
echo "=========================================="
|
|
|
|
# 检查 Python
|
|
echo -e "\n1. 检查 Python 环境..."
|
|
if ! command -v python &> /dev/null; then
|
|
echo -e "${RED}✗ Python 未安装${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}✓ Python 已安装: $(python --version)${NC}"
|
|
|
|
# 检查依赖
|
|
echo -e "\n2. 检查依赖..."
|
|
python -c "import flask" 2>/dev/null || {
|
|
echo -e "${YELLOW}⚠ Flask 未安装,正在安装...${NC}"
|
|
pip install flask flask-cors
|
|
}
|
|
echo -e "${GREEN}✓ 依赖检查完成${NC}"
|
|
|
|
# 检查环境变量
|
|
echo -e "\n3. 检查环境变量..."
|
|
if [ -z "$TUSHARE_TOKEN" ]; then
|
|
if [ -f ".env" ]; then
|
|
echo -e "${YELLOW}⚠ 从 .env 文件加载环境变量${NC}"
|
|
export $(cat .env | grep -v '^#' | xargs)
|
|
else
|
|
echo -e "${RED}✗ TUSHARE_TOKEN 未设置${NC}"
|
|
echo " 请在 .env 文件中设置 TUSHARE_TOKEN"
|
|
exit 1
|
|
fi
|
|
fi
|
|
echo -e "${GREEN}✓ 环境变量检查完成${NC}"
|
|
|
|
# 检查 SSH 配置
|
|
echo -e "\n4. 检查 SSH 配置..."
|
|
if [ -f "hk_ecs.pem" ]; then
|
|
echo -e "${GREEN}✓ SSH 私钥文件存在 (hk_ecs.pem)${NC}"
|
|
|
|
# 检查权限
|
|
PERM=$(stat -f "%Lp" hk_ecs.pem 2>/dev/null || stat -c "%a" hk_ecs.pem 2>/dev/null)
|
|
if [ "$PERM" != "600" ]; then
|
|
echo -e "${YELLOW}⚠ 修复 SSH 私钥权限...${NC}"
|
|
chmod 600 hk_ecs.pem
|
|
fi
|
|
echo -e "${GREEN}✓ SSH 私钥权限正确 (600)${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ SSH 私钥文件不存在,港美股数据获取将受限${NC}"
|
|
fi
|
|
|
|
# 解析参数
|
|
HOST="0.0.0.0"
|
|
PORT="5000"
|
|
DEBUG=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--host)
|
|
HOST="$2"
|
|
shift 2
|
|
;;
|
|
--port)
|
|
PORT="$2"
|
|
shift 2
|
|
;;
|
|
--debug)
|
|
DEBUG="--debug"
|
|
shift
|
|
;;
|
|
--with-ssh)
|
|
export SSH_ENABLED=true
|
|
export SSH_HOST=8.218.167.69
|
|
export SSH_PORT=22
|
|
export SSH_USERNAME=root
|
|
export SSH_KEY_PATH=hk_ecs.pem
|
|
export SSH_LOCAL_PORT=1080
|
|
echo -e "${GREEN}✓ SSH 隧道已启用${NC}"
|
|
shift
|
|
;;
|
|
--help)
|
|
echo ""
|
|
echo "用法: ./start_flask_server.sh [选项]"
|
|
echo ""
|
|
echo "选项:"
|
|
echo " --host HOST 绑定主机 (默认: 0.0.0.0)"
|
|
echo " --port PORT 绑定端口 (默认: 5000)"
|
|
echo " --debug 启用调试模式"
|
|
echo " --with-ssh 启用 SSH 隧道"
|
|
echo " --help 显示帮助"
|
|
echo ""
|
|
echo "示例:"
|
|
echo " ./start_flask_server.sh"
|
|
echo " ./start_flask_server.sh --port 8080"
|
|
echo " ./start_flask_server.sh --with-ssh"
|
|
echo " ./start_flask_server.sh --host 127.0.0.1 --port 5000 --debug --with-ssh"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo -e "${RED}未知选项: $1${NC}"
|
|
echo "使用 --help 查看帮助"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# 启动服务
|
|
echo -e "\n5. 启动 Flask 服务..."
|
|
echo -e " 主机: ${YELLOW}$HOST${NC}"
|
|
echo -e " 端口: ${YELLOW}$PORT${NC}"
|
|
echo -e " 调试: ${YELLOW}$([ -n "$DEBUG" ] && echo "是" || echo "否")${NC}"
|
|
echo -e " SSH: ${YELLOW}$([ "$SSH_ENABLED" = "true" ] && echo "启用" || echo "禁用")${NC}"
|
|
echo ""
|
|
|
|
echo -e "${GREEN}✓ 服务启动中...${NC}"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
python core/datasource/flask_server.py --host "$HOST" --port "$PORT" $DEBUG
|