-
Notifications
You must be signed in to change notification settings - Fork 324
Expand file tree
/
Copy pathmain.py
More file actions
59 lines (51 loc) · 1.69 KB
/
main.py
File metadata and controls
59 lines (51 loc) · 1.69 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
#!/usr/bin/env python3
"""
微信解密工具主启动脚本
使用方法:
uv run main.py
默认在10392端口启动API服务
"""
import uvicorn
import os
from pathlib import Path
from wechat_decrypt_tool.runtime_settings import read_effective_backend_port
def main():
"""启动微信解密工具API服务"""
host = os.environ.get("WECHAT_TOOL_HOST", "127.0.0.1")
port, port_source = read_effective_backend_port(default=10392)
access_host = "127.0.0.1" if host in {"0.0.0.0", "::"} else host
print("=" * 60)
print("微信解密工具 API 服务")
print("=" * 60)
print("正在启动服务...")
if port_source == "env":
print("端口来源: 环境变量 WECHAT_TOOL_PORT")
elif port_source == "settings":
print("端口来源: 配置文件 output/runtime_settings.json(由网页/桌面设置写入)")
else:
print("端口来源: 默认值")
print(f"API文档: http://{access_host}:{port}/docs")
print(f"健康检查: http://{access_host}:{port}/api/health")
print("按 Ctrl+C 停止服务")
print("=" * 60)
repo_root = Path(__file__).resolve().parent
enable_reload = os.environ.get("WECHAT_TOOL_RELOAD", "0") == "1"
# 启动API服务
uvicorn.run(
"wechat_decrypt_tool.api:app",
host=host,
port=port,
reload=enable_reload,
reload_dirs=[str(repo_root / "src")] if enable_reload else None,
reload_excludes=[
"output/*",
"output/**",
"frontend/*",
"frontend/**",
".venv/*",
".venv/**",
] if enable_reload else None,
log_level="info"
)
if __name__ == "__main__":
main()