import argparse import asyncio import signal import uvicorn import sys 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() def signal_handler(sig, frame): print("[python] [flask] Received signal to terminate the server:", sig) sys.exit(0) # 注册信号处理函数 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") if debug == True: uvicorn.run(app="api:app", host=host, port=int(port), reload=debug, loop="auto") else: uvicorn.run(app="api:app", host=host, port=int(port), loop="auto") # app.run(port=int(port), use_reloader=bool(debug)) # 注册信号处理函数 # 或许flask内置的stdio与node.js stdio有冲突,导致控制台无法显示信息。 # 如果想要查看控制台输出,请单独启动服务 npm run dev-python print("python server is running at port:", port)