-
Notifications
You must be signed in to change notification settings - Fork 666
Open
Description
Bug 报告
问题描述
服务启动正常,可以访问管理界面,但是API调用返回404错误。昨天之前工作正常,今天突然出现此问题。
环境信息
- 版本: 尝试过 4.1.9 和 4.2.1(当前运行 4.2.1)
- 部署方式: Docker Compose
- 操作系统: Ubuntu 25.04 (Wayland)
复现步骤
- 使用提供的 Docker Compose 配置启动服务
- 服务正常启动,健康检查通过
- 管理界面可以正常访问
- API 调用返回 404 错误
预期行为
API 调用应该正常工作,就像昨天之前一样。
实际行为
- 服务启动正常,日志显示:
- 数据库连接成功
- 15个API密钥加载成功
- 调度器启动成功
- 健康检查端点正常工作
- 但是API调用返回404错误:
2025-07-20 15:22:00,759 | ERROR | [exceptions.py:99] | HTTP Exception: Not Found (Status: 404)
配置文件
Docker Compose 配置
version: '3.8'
volumes:
mysql_data:
services:
gemini-balance:
image: ghcr.io/snailyp/gemini-balance:latest
container_name: gemini-balance
restart: unless-stopped
ports:
- "8007:8000"
dns:
- 1.1.1.1
- 1.0.0.1
env_file:
- .env
depends_on:
mysql:
condition: service_healthy
volumes:
- ./data:/app/data
environment:
- LANG=en_US.UTF-8
- LC_ALL=en_US.UTF-8
healthcheck:
test: ["CMD-SHELL", "python -c \"import requests; exit(0) if requests.get('http://localhost:8000/health').status_code == 200 else exit(1)\""]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- gemini-balance-internal
- gemini-balance-api
mysql:
image: mysql:8
container_name: gemini-balance-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
networks:
- gemini-balance-internal
networks:
gemini-balance-internal:
driver: bridge
internal: false
gemini-balance-api:
driver: bridge
环境变量配置
# 数据库配置
DATABASE_TYPE=mysql
MYSQL_HOST=gemini-balance-mysql
MYSQL_PORT=3306
MYSQL_USER=gemini
MYSQL_PASSWORD=change_me
MYSQL_DATABASE=default_db
# API配置
API_KEYS=["REDACTED"]
ALLOWED_TOKENS=["REDACTED"]
AUTH_TOKEN=REDACTED
VERTEX_API_KEYS=["AQ.Abxxxxxxxxxxxxxxxxxxx"]
VERTEX_EXPRESS_BASE_URL=https://aiplatform.googleapis.com/v1beta1/publishers/google
TEST_MODEL=gemini-1.5-flash
# 模型配置
THINKING_MODELS=["gemini-2.5-flash-preview-04-17"]
THINKING_BUDGET_MAP={"gemini-2.5-flash-preview-04-17": 4000}
IMAGE_MODELS=["gemini-2.0-flash-exp"]
SEARCH_MODELS=["gemini-2.0-flash-exp","gemini-2.0-pro-exp"]
FILTERED_MODELS=["gemini-1.0-pro-vision-latest", "gemini-pro-vision", "chat-bison-001", "text-bison-001", "embedding-gecko-001"]
# 功能配置
TOOLS_CODE_EXECUTION_ENABLED=false
SHOW_SEARCH_LINK=true
SHOW_THINKING_PROCESS=true
BASE_URL=https://generativelanguage.googleapis.com/v1beta
MAX_FAILURES=10
MAX_RETRIES=3
CHECK_INTERVAL_HOURS=1
TIMEZONE=Europe/London
LANGUAGE=en
TIME_OUT=300
PROXIES=[]
PROXIES_USE_CONSISTENCY_HASH_BY_API_KEY=true
# 付费密钥和图像配置
PAID_KEY=AIzaSyxxxxxxxxxxxxxxxxxxx
CREATE_IMAGE_MODEL=imagen-3.0-generate-002
UPLOAD_PROVIDER=smms
SMMS_SECRET_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PICGO_API_KEY=xxxx
CLOUDFLARE_IMGBED_URL=https://xxxxxxx.pages.dev/upload
CLOUDFLARE_IMGBED_AUTH_CODE=xxxxxxxxx
CLOUDFLARE_IMGBED_UPLOAD_FOLDER=
# 流优化配置
STREAM_OPTIMIZER_ENABLED=false
STREAM_MIN_DELAY=0.016
STREAM_MAX_DELAY=0.024
STREAM_SHORT_TEXT_THRESHOLD=10
STREAM_LONG_TEXT_THRESHOLD=50
STREAM_CHUNK_SIZE=5
# 日志配置
LOG_LEVEL=info
AUTO_DELETE_ERROR_LOGS_ENABLED=true
AUTO_DELETE_ERROR_LOGS_DAYS=7
AUTO_DELETE_REQUEST_LOGS_ENABLED=false
AUTO_DELETE_REQUEST_LOGS_DAYS=30
# 其他配置
FAKE_STREAM_ENABLED=True
FAKE_STREAM_EMPTY_DATA_INTERVAL_SECONDS=5
SAFETY_SETTINGS=[{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "OFF"}, {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "OFF"}, {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "OFF"}, {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "OFF"}, {"category": "HARM_CATEGORY_CIVIC_INTEGRITY", "threshold": "BLOCK_NONE"}]
URL_NORMALIZATION_ENABLED=false
TTS_MODEL=gemini-2.5-flash-preview-tts
TTS_VOICE_NAME=Zephyr
TTS_SPEED=normal
日志信息
启动日志(部分)
2025-07-20 15:19:05,081 | INFO | [key_manager.py:229] | KeyManager instance created/re-created with 15 API keys and 1 Vertex Express API keys.
2025-07-20 15:19:05,081 | INFO | [application.py:47] | Database, config sync, and KeyManager initialized successfully
2025-07-20 15:19:05,364 | INFO | [application.py:84] | Update check completed. Info: {'update_available': False, 'latest_version': None, 'error_message': None, 'current_version': '2.2.1'}
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
错误日志
2025-07-20 15:22:00,759 | ERROR | [exceptions.py:99] | HTTP Exception: Not Found (Status: 404)
2025-07-20 15:22:13,813 | ERROR | [exceptions.py:99] | HTTP Exception: Not Found (Status: 404)
2025-07-20 15:22:18,374 | ERROR | [exceptions.py:99] | HTTP Exception: Not Found (Status: 404)
附加信息
- API密钥已验证有效
- 已尝试更新到最新版本,问题依然存在
- 昨天之前工作正常
- 健康检查端点
/health
可以正常访问 - 管理界面可以正常访问,显示15个密钥状态正常
- 数据库连接正常,MySQL容器运行正常
可能的原因
怀疑可能是路由配置或API端点映射问题,导致除了健康检查和管理界面外的其他API调用返回404。
Metadata
Metadata
Assignees
Labels
No labels