70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
"""
|
|
DeepSeek Web Adapter - 主入口
|
|
启动 Adapter 连接 Array 平台 + 控制面板
|
|
"""
|
|
import asyncio
|
|
import logging
|
|
import sys
|
|
import threading
|
|
import signal
|
|
|
|
from src.config import config
|
|
from src.adapter import DeepSeekWebAdapter
|
|
from src.admin_server import AdminServer
|
|
|
|
logging.basicConfig(
|
|
level=getattr(logging, config.log_level, logging.INFO),
|
|
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
|
|
handlers=[
|
|
logging.StreamHandler(sys.stdout),
|
|
logging.FileHandler("adapter_debug.log", encoding="utf-8"),
|
|
],
|
|
)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def main():
|
|
logger.info("=" * 60)
|
|
logger.info(" DeepSeek Web Adapter - 启动中...")
|
|
logger.info("=" * 60)
|
|
|
|
adapter = DeepSeekWebAdapter()
|
|
admin = AdminServer(adapter)
|
|
|
|
loop = asyncio.new_event_loop()
|
|
asyncio.set_event_loop(loop)
|
|
|
|
admin.set_adapter(adapter, loop)
|
|
|
|
admin_thread = threading.Thread(
|
|
target=admin.run,
|
|
kwargs={"host": "0.0.0.0", "port": config.admin_port},
|
|
daemon=True,
|
|
)
|
|
admin_thread.start()
|
|
logger.info(f"控制面板已启动: http://localhost:{config.admin_port}")
|
|
|
|
def shutdown(sig=None, frame=None):
|
|
logger.info("收到关闭信号,正在退出...")
|
|
loop.call_soon_threadsafe(loop.stop)
|
|
|
|
signal.signal(signal.SIGINT, shutdown)
|
|
signal.signal(signal.SIGTERM, shutdown)
|
|
|
|
logger.info("正在连接 Array 平台...")
|
|
try:
|
|
loop.run_until_complete(adapter.run())
|
|
except KeyboardInterrupt:
|
|
logger.info("用户中断,正在退出...")
|
|
except Exception as e:
|
|
logger.error(f"Adapter 运行异常: {e}", exc_info=True)
|
|
finally:
|
|
if adapter.session:
|
|
loop.run_until_complete(adapter.stop_deepseek_session())
|
|
loop.close()
|
|
logger.info("DeepSeek Web Adapter 已关闭")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|