mirror of
https://gitcode.com/JianFeeeee/TrulyMEM-TrueHumanMEM.git
synced 2026-10-15 12:15:32 +00:00
feat: 入口添加 --web 参数,二进制可直接启动 Web headless 服务
This commit is contained in:
@ -1,6 +1,9 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import signal
|
||||||
|
import threading
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
# 用户配置文件始终放在用户目录
|
# 用户配置文件始终放在用户目录
|
||||||
@ -30,21 +33,54 @@ from ui import GraphMemoryApp
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
backend_server = BackendServer(
|
parser = argparse.ArgumentParser(description='TrulyMEM - True Human Memory')
|
||||||
db_path=str(DB_PATH),
|
parser.add_argument('--web', action='store_true', help='以 Web 服务模式启动(headless,不启动 TUI)')
|
||||||
use_embedded_db=True,
|
parser.add_argument('--port', type=int, default=4096, help='Web 服务端口(默认 4096)')
|
||||||
config_file=str(CONFIG_PATH)
|
args = parser.parse_args()
|
||||||
)
|
|
||||||
backend_server.start()
|
|
||||||
|
|
||||||
app = GraphMemoryApp(backend_server=backend_server, config_file=str(CONFIG_PATH))
|
if args.web:
|
||||||
|
# Web headless 模式
|
||||||
|
from web_api import run_web_server, stop_web_server
|
||||||
|
|
||||||
try:
|
backend_server = BackendServer(
|
||||||
app.run()
|
db_path=str(DB_PATH),
|
||||||
except KeyboardInterrupt:
|
use_embedded_db=True,
|
||||||
print("\n退出")
|
config_file=str(CONFIG_PATH)
|
||||||
finally:
|
)
|
||||||
|
backend_server.start()
|
||||||
|
|
||||||
|
print(f"TrulyMEM Web 服务启动在 http://0.0.0.0:{args.port}")
|
||||||
|
run_web_server(port=args.port, host='0.0.0.0')
|
||||||
|
|
||||||
|
# 阻塞主线程直到收到信号
|
||||||
|
shutdown_event = threading.Event()
|
||||||
|
def _handle_signal(signum, frame):
|
||||||
|
print("\n收到停止信号,正在关闭...")
|
||||||
|
shutdown_event.set()
|
||||||
|
signal.signal(signal.SIGINT, _handle_signal)
|
||||||
|
signal.signal(signal.SIGTERM, _handle_signal)
|
||||||
|
|
||||||
|
shutdown_event.wait()
|
||||||
|
stop_web_server()
|
||||||
backend_server.shutdown()
|
backend_server.shutdown()
|
||||||
|
print("TrulyMEM Web 服务已停止")
|
||||||
|
else:
|
||||||
|
# TUI 模式(默认)
|
||||||
|
backend_server = BackendServer(
|
||||||
|
db_path=str(DB_PATH),
|
||||||
|
use_embedded_db=True,
|
||||||
|
config_file=str(CONFIG_PATH)
|
||||||
|
)
|
||||||
|
backend_server.start()
|
||||||
|
|
||||||
|
app = GraphMemoryApp(backend_server=backend_server, config_file=str(CONFIG_PATH))
|
||||||
|
|
||||||
|
try:
|
||||||
|
app.run()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\n退出")
|
||||||
|
finally:
|
||||||
|
backend_server.shutdown()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user