-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart.py
More file actions
71 lines (61 loc) · 2.16 KB
/
start.py
File metadata and controls
71 lines (61 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
TreeDB Python服务器启动脚本
"""
import os
import sys
from pathlib import Path
# 设置工作目录为项目根目录
project_root = Path(__file__).parent
os.chdir(project_root)
# 设置项目根目录环境变量
os.environ['PROJECT_ROOT'] = str(project_root.resolve())
# 设置数据库路径环境变量
db_path = project_root / 'data' / 'databases' / 'treedb.sqlite'
os.environ['DB_PATH'] = str(db_path.resolve())
# 添加server目录到Python路径
server_dir = project_root / 'server'
sys.path.insert(0, str(server_dir))
print(f"Project root: {project_root}")
print(f"Server directory: {server_dir}")
print(f"Database file path: {db_path.resolve()}")
print(f"Database file exists: {db_path.exists()}")
print(f"Environment variable DB_PATH: {os.environ.get('DB_PATH')}")
# 导入并运行服务器
if __name__ == '__main__':
try:
# 检查端口是否被占用,如果是则使用备用端口
port = int(os.environ.get('PORT', '3000'))
# 如果3000端口被占用,尝试3001-3010
if port == 3000:
import socket
for test_port in range(3000, 3011):
try:
test_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
test_socket.bind(('localhost', test_port))
test_socket.close()
port = test_port
break
except OSError:
continue
else:
print("Cannot find available port 3000-3010")
sys.exit(1)
# 设置端口环境变量
os.environ['PORT'] = str(port)
print(f"Using port: {port}")
# 导入并运行新的模块化应用
# Change to server directory and run
import subprocess
import sys
result = subprocess.run([sys.executable, 'app.py'], cwd='server')
sys.exit(result.returncode)
except KeyboardInterrupt:
print("\nServer stopped")
sys.exit(0)
except Exception as e:
print(f"Error starting server: {e}")
import traceback
traceback.print_exc()
sys.exit(1)