增加flask启动端口检测,增加H2协议的支持。

This commit is contained in:
2025-11-17 17:13:22 +08:00
parent 13c7930f88
commit 317fc2586a
8 changed files with 144 additions and 18 deletions

View File

@@ -317,7 +317,7 @@ def deviceList():
@app.route('/passToken', methods=['POST'])
def passToken():
data = request.get_json()
print(data)
print(json.dumps(data))
return ResultData(data="").toJson()
# 获取设备应用列表

View File

@@ -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)