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