main.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import argparse
  2. import asyncio
  3. import signal
  4. import uvicorn
  5. import sys
  6. from api import app
  7. import uvicorn
  8. import configparser, json
  9. import uvicorn.loops.auto
  10. import uvicorn.protocols.http.auto
  11. import uvicorn.protocols.websockets.auto
  12. import uvicorn.lifespan.on
  13. from multiprocessing import Process, freeze_support
  14. SHUTDOWN_TIMEOUT = 10
  15. # ===============默认数据配置=====================
  16. config = configparser.ConfigParser()
  17. config_name = "config.ini"
  18. config.read(config_name)
  19. # argparse
  20. # parser = argparse.ArgumentParser(description="Process some integers.")
  21. # parser.add_argument("--port", type=int, default=7074, help="The port number.")
  22. # args = parser.parse_args()
  23. def signal_handler(sig, frame):
  24. print("[python] [flask] Received signal to terminate the server:", sig)
  25. sys.exit(0)
  26. # 注册信号处理函数
  27. signal.signal(signal.SIGTERM, signal_handler)
  28. signal.signal(signal.SIGINT, signal_handler)
  29. if __name__ == "__main__":
  30. freeze_support()
  31. # 以api方式启动服务会出现警告,请忽略
  32. # app.run(port=args.port,use_reloader=True)
  33. host = config.get("app", "host")
  34. port = config.get("app", "port")
  35. debug = config.get("app", "debug")
  36. if debug == True:
  37. uvicorn.run(app="api:app", host=host, port=int(port), reload=debug, loop="auto")
  38. else:
  39. uvicorn.run(app="api:app", host=host, port=int(port), loop="auto")
  40. # app.run(port=int(port), use_reloader=bool(debug))
  41. # 注册信号处理函数
  42. # 或许flask内置的stdio与node.js stdio有冲突,导致控制台无法显示信息。
  43. # 如果想要查看控制台输出,请单独启动服务 npm run dev-python
  44. print("python server is running at port:", port)