增加flask启动端口检测,增加H2协议的支持。
This commit is contained in:
@@ -1,10 +1,20 @@
|
||||
|
||||
import asyncio
|
||||
# ===== Main.py 顶部放置(所有 import 之前)=====
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from asgiref.wsgi import WsgiToAsgi
|
||||
|
||||
from Utils.AiUtils import AiUtils
|
||||
from Utils.LogManager import LogManager
|
||||
import logging
|
||||
from hypercorn.asyncio import serve
|
||||
from hypercorn.config import Config
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from Module.DeviceInfo import DeviceInfo
|
||||
from Module.FlaskSubprocessManager import FlaskSubprocessManager
|
||||
from Utils.DevDiskImageDeployer import DevDiskImageDeployer
|
||||
|
||||
if "IOSAI_PYTHON" not in os.environ:
|
||||
base_path = Path(sys.argv[0]).resolve()
|
||||
@@ -14,13 +24,6 @@ if "IOSAI_PYTHON" not in os.environ:
|
||||
os.environ["IOSAI_PYTHON"] = str(sidecar)
|
||||
# ==============================================
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from Module.DeviceInfo import DeviceInfo
|
||||
from Module.FlaskSubprocessManager import FlaskSubprocessManager
|
||||
from Utils.DevDiskImageDeployer import DevDiskImageDeployer
|
||||
|
||||
# 确定 exe 或 py 文件所在目录
|
||||
BASE = Path(getattr(sys, 'frozen', False) and sys.executable or __file__).resolve().parent
|
||||
LOG_DIR = BASE / "log"
|
||||
@@ -33,8 +36,32 @@ def _run_flask_role():
|
||||
print("Flask Pid:", os.getpid())
|
||||
port = int(os.getenv("FLASK_COMM_PORT", "34566")) # 固定端口的兜底仍是 34567
|
||||
app = get_app()
|
||||
flaskPort = port + 1
|
||||
AiUtils.flask_port_free(flaskPort)
|
||||
bootstrap_server_side_effects()
|
||||
app.run(host="0.0.0.0", port=port + 1, debug=False, use_reloader=False, threaded=True)
|
||||
|
||||
# 把 WSGI Flask app 包成 ASGI app
|
||||
asgi_app = WsgiToAsgi(app)
|
||||
|
||||
# Hypercorn 配置
|
||||
# 自动定位 resources 目录
|
||||
base_dir = os.path.dirname(os.path.abspath(__file__)) # 当前 py 的目录(Module/)
|
||||
project_root = os.path.dirname(base_dir) # 回到项目根目录(iOSAi/)
|
||||
resource_dir = os.path.join(project_root, "resources") # 拼到 resources
|
||||
|
||||
config = Config()
|
||||
config.bind = [f"0.0.0.0:{flaskPort}"]
|
||||
config.alpn_protocols = ["h2"] # 开 HTTP/2
|
||||
config.certfile = os.path.join(resource_dir, "cert.pem")
|
||||
config.keyfile = os.path.join(resource_dir, "key.pem")
|
||||
|
||||
print(f"Starting Hypercorn on port {flaskPort} (HTTP/2 enabled)")
|
||||
|
||||
# 开启 HTTP/2
|
||||
config.alpn_protocols = ["h2"]
|
||||
|
||||
print(f"Starting Hypercorn on https://localhost:{flaskPort} (HTTP/2 enabled)")
|
||||
asyncio.run(serve(asgi_app, config))
|
||||
|
||||
if "--role=flask" in sys.argv:
|
||||
_run_flask_role()
|
||||
@@ -51,7 +78,7 @@ if __name__ == "__main__":
|
||||
# 清空日志
|
||||
LogManager.clearLogs()
|
||||
|
||||
# main(sys.argv)
|
||||
main(sys.argv)
|
||||
|
||||
# 添加iOS开发包到电脑上
|
||||
deployer = DevDiskImageDeployer(verbose=True)
|
||||
|
||||
Reference in New Issue
Block a user