chore: initialize sandbox and overwrite remote content
Some checks failed
Pre-commit / run (ubuntu-latest) (push) Has been cancelled
Deploy Sphinx documentation to Pages / build_en (ubuntu-latest, 3.10) (push) Has been cancelled
Deploy Sphinx documentation to Pages / build_zh (ubuntu-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.12) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.12) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.12) (push) Has been cancelled

This commit is contained in:
codex-bot
2026-03-02 22:32:27 +08:00
commit a64378956a
584 changed files with 93604 additions and 0 deletions

45
qingjian_cs/run.py Normal file
View File

@@ -0,0 +1,45 @@
#!/usr/bin/env python3
import argparse
import threading
from app.client import QingjianClient
from app.config import HTTP_HOST, HTTP_PORT
from app.http_api import run_http_server
from app.logger import setup_logger
from app.task_manager import TaskManager
logger = setup_logger()
def start_http(host: str, port: int, tm: TaskManager):
run_http_server(host=host, port=port, task_manager=tm)
def main():
parser = argparse.ArgumentParser(description='Qingjian CS launcher')
mode = parser.add_mutually_exclusive_group()
mode.add_argument('--api-only', action='store_true', help='only run HTTP API')
mode.add_argument('--tianwang', action='store_true', help='run HTTP API + websocket client')
parser.add_argument('--host', default=HTTP_HOST)
parser.add_argument('--port', type=int, default=HTTP_PORT)
args = parser.parse_args()
tm = TaskManager()
if args.api_only:
logger.info('启动模式: API Only %s:%s', args.host, args.port)
start_http(args.host, args.port, tm)
return
if args.tianwang:
logger.info('启动模式: Tianwang (API + WebSocket)')
th = threading.Thread(target=start_http, args=(args.host, args.port, tm), daemon=True)
th.start()
logger.info('启动模式: WebSocket')
QingjianClient().run()
if __name__ == '__main__':
main()