rambo 1 gadu atpakaļ
vecāks
revīzija
9446bd101e
5 mainītis faili ar 20 papildinājumiem un 28 dzēšanām
  1. 1 0
      package.json
  2. 17 26
      python/main.py
  3. 1 1
      python/middleware.py
  4. BIN
      python/requirements.txt
  5. 1 1
      python/setup.py

+ 1 - 0
package.json

@@ -9,6 +9,7 @@
     "dev-electron": "ee-bin dev --serve=electron",
     "build-frontend": "ee-bin build --cmds=frontend && ee-bin move --flag=frontend_dist",
     "build-python": "ee-bin build --cmds=python && ee-bin move --flag=python_dist",
+    "dev-python": "ee-bin exec --cmds=python",
     "start": "ee-bin start",
     "rd": "ee-bin move --flag=frontend_dist",
     "encrypt": "ee-bin encrypt",

+ 17 - 26
python/main.py

@@ -3,53 +3,44 @@ import asyncio
 import signal
 import uvicorn
 import sys
-from api import *
+from api import app
 import uvicorn
 import configparser, json
+import uvicorn.loops.auto
+import uvicorn.protocols.http.auto
+import uvicorn.protocols.websockets.auto
+import uvicorn.lifespan.on
+from multiprocessing import Process, freeze_support
+
 SHUTDOWN_TIMEOUT = 10
 # ===============默认数据配置=====================
 config = configparser.ConfigParser()
 config_name = "config.ini"
 config.read(config_name)
 # argparse
-parser = argparse.ArgumentParser(description="Process some integers.")
-parser.add_argument("--port", type=int, default=7074, help="The port number.")
-args = parser.parse_args()
-server = uvicorn.Server(uvicorn.Config(app))
+# parser = argparse.ArgumentParser(description="Process some integers.")
+# parser.add_argument("--port", type=int, default=7074, help="The port number.")
+# args = parser.parse_args()
+
 
-# 通过信号来退出服务,否则会出现终端显示退出后,实际进程仍在运行
-# 定义信号处理函数
 def signal_handler(sig, frame):
     print("[python] [flask] Received signal to terminate the server:", sig)
     sys.exit(0)
 
-
-@app.on_event("shutdown")
-async def shutdown():
-    server.should_exit = True
-    await asyncio.sleep(3)
-
-
-async def force_shutdown():
-    await asyncio.sleep(SHUTDOWN_TIMEOUT)
-    if not server.should_exit:
-        server.force_exit = True
-
-
+# 注册信号处理函数
+signal.signal(signal.SIGTERM, signal_handler)
+signal.signal(signal.SIGINT, signal_handler)
 if __name__ == "__main__":
+    freeze_support()
     # 以api方式启动服务会出现警告,请忽略
     # app.run(port=args.port,use_reloader=True)
     host = config.get("app", "host")
     port = config.get("app", "port")
     debug = config.get("app", "debug")
-    server.install_signal_handlers()
-    asyncio.ensure_future(force_shutdown())
     uvicorn.run(
-        app="main:app",
-        host=host,
-        port=int(port),
-        reload=bool(debug),
+        app="api:app", host=host, port=int(port), reload=bool(debug), loop="auto"
     )
+    # app.run(port=int(port), use_reloader=bool(debug))
     # 注册信号处理函数
     # 或许flask内置的stdio与node.js stdio有冲突,导致控制台无法显示信息。
     # 如果想要查看控制台输出,请单独启动服务 npm run dev-python

+ 1 - 1
python/middleware.py

@@ -10,7 +10,7 @@ import os
 from pydantic import BaseModel, validator, conint, constr, Field
 
 # 关闭文档
-app = FastAPI()
+app = FastAPI(redoc_url=None)
 # app.mount("/model", StaticFiles(directory="model"), name="model")
 app.add_middleware(
     CORSMiddleware,

BIN
python/requirements.txt


+ 1 - 1
python/setup.py

@@ -11,7 +11,7 @@ options = {
     "build_exe": {
         "build_exe": "./dist/",
         "excludes": ["*.txt"],
-        "include_files": ["*.ini"],
+        "include_files": ["config.ini"],
         "optimize": 2,
     }
 }