初次提交
This commit is contained in:
126
backend/debug_start.py
Normal file
126
backend/debug_start.py
Normal file
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env python3
|
||||
# 带诊断信息的启动脚本
|
||||
|
||||
import socket
|
||||
import sys
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
import uvicorn
|
||||
|
||||
# 检查端口是否可用
|
||||
def check_port(port):
|
||||
try:
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||||
s.bind(('0.0.0.0', port))
|
||||
return True
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
# 获取本机IP
|
||||
def get_local_ip():
|
||||
try:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.connect(("8.8.8.8", 80))
|
||||
ip = s.getsockname()[0]
|
||||
s.close()
|
||||
return ip
|
||||
except:
|
||||
return "127.0.0.1"
|
||||
|
||||
app = FastAPI(
|
||||
title="云盘应用 API",
|
||||
description="现代化的云存储Web应用后端API",
|
||||
version="1.0.0",
|
||||
docs_url="/docs",
|
||||
redoc_url="/redoc"
|
||||
)
|
||||
|
||||
# 更宽松的CORS配置
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
@app.get("/")
|
||||
async def root():
|
||||
return {
|
||||
"message": "云盘应用 API",
|
||||
"version": "1.0.0",
|
||||
"docs": "/docs",
|
||||
"health": "/health"
|
||||
}
|
||||
|
||||
@app.get("/health")
|
||||
async def health():
|
||||
return {
|
||||
"status": "healthy",
|
||||
"message": "服务运行正常"
|
||||
}
|
||||
|
||||
@app.get("/debug")
|
||||
async def debug_info():
|
||||
return {
|
||||
"python_version": sys.version,
|
||||
"working_directory": ".",
|
||||
"available_endpoints": [
|
||||
"/",
|
||||
"/health",
|
||||
"/debug",
|
||||
"/docs",
|
||||
"/redoc",
|
||||
"/openapi.json"
|
||||
]
|
||||
}
|
||||
|
||||
if __name__ == "__main__":
|
||||
port = 8000
|
||||
|
||||
print("🔍 启动前诊断...")
|
||||
print(f"Python版本: {sys.version}")
|
||||
print(f"工作目录: {(await debug_info())['working_directory']}")
|
||||
|
||||
# 检查端口
|
||||
if not check_port(port):
|
||||
print(f"❌ 端口 {port} 被占用,尝试使用端口 8001")
|
||||
port = 8001
|
||||
|
||||
local_ip = get_local_ip()
|
||||
|
||||
print(f"🚀 启动云盘后端服务...")
|
||||
print("=" * 60)
|
||||
print(f"📍 本地访问: http://localhost:{port}")
|
||||
print(f"📍 网络访问: http://{local_ip}:{port}")
|
||||
print(f"📚 API文档: http://localhost:{port}/docs")
|
||||
print(f"📚 网络文档: http://{local_ip}:{port}/docs")
|
||||
print(f"❤️ 健康检查: http://localhost:{port}/health")
|
||||
print(f"🔧 调试信息: http://localhost:{port}/debug")
|
||||
print(f"⏹️ 按 Ctrl+C 停止服务")
|
||||
print("=" * 60)
|
||||
|
||||
# 启动时打印所有路由
|
||||
@app.on_event("startup")
|
||||
async def startup_event():
|
||||
print("\n📋 可用路由:")
|
||||
for route in app.routes:
|
||||
if hasattr(route, 'path') and hasattr(route, 'methods'):
|
||||
print(f" {list(route.methods)} {route.path}")
|
||||
print()
|
||||
|
||||
try:
|
||||
uvicorn.run(
|
||||
app,
|
||||
host="0.0.0.0", # 允许外部访问
|
||||
port=port,
|
||||
reload=False,
|
||||
access_log=True, # 显示访问日志
|
||||
log_level="info"
|
||||
)
|
||||
except Exception as e:
|
||||
print(f"❌ 启动失败: {e}")
|
||||
print("\n💡 尝试的解决方案:")
|
||||
print("1. 检查防火墙设置")
|
||||
print("2. 尝试其他端口: python debug_start.py")
|
||||
print("3. 检查是否有其他程序占用端口")
|
||||
Reference in New Issue
Block a user