diff --git a/start_server.py b/start_server.py index 47ccc8f..f7a252b 100644 --- a/start_server.py +++ b/start_server.py @@ -13,6 +13,7 @@ import threading import django import importlib.util import re +import argparse from pathlib import Path from django.db import transaction from django.db import models @@ -1004,11 +1005,13 @@ class SimpleFileWatcher: class ServerManager: """服务器管理器""" - def __init__(self): + def __init__(self, host: str = '0.0.0.0', port: int = 8000): self.process = None self.watcher = None self.base_dir = Path(__file__).resolve().parent self.running = True + self.host = host + self.port = int(port) def start_server(self): """启动服务器进程""" @@ -1017,8 +1020,8 @@ class ServerManager: cmd = [ sys.executable, '-m', 'daphne', - '-b', '0.0.0.0', - '-p', '8000', + '-b', self.host, + '-p', str(self.port), 'hertz_server_django.asgi:application' ] @@ -1214,9 +1217,18 @@ def main(): # 步骤4: 启动服务器 print("\n📋 步骤4: 启动服务器...") print("🚀 启动Hertz Server Django (支持HTTP + WebSocket + 热重启)") + parser = argparse.ArgumentParser(add_help=False) + parser.add_argument('--port', type=int) + args, _ = parser.parse_known_args() + env_port = os.environ.get('PORT') or os.environ.get('DJANGO_PORT') + try: + env_port_int = int(env_port) if env_port is not None else None + except ValueError: + env_port_int = None + port = args.port or env_port_int or 8000 print("📡 使用Daphne ASGI服务器") - print("🌐 HTTP服务: http://127.0.0.1:8000/") - print("🔌 WebSocket服务: ws://127.0.0.1:8000/ws/") + print(f"🌐 HTTP服务: http://127.0.0.1:{port}/") + print(f"🔌 WebSocket服务: ws://127.0.0.1:{port}/ws/") print("🔥 自动热重启: 已启用") print("\n按 Ctrl+C 停止服务器\n") @@ -1236,7 +1248,7 @@ def main(): return # 创建服务器管理器 - server_manager = ServerManager() + server_manager = ServerManager(port=port) try: # 启动服务器