index.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. import sys
  2. import uvicorn
  3. import signal
  4. from api import *
  5. from sockets.socket_server import *
  6. import uvicorn.loops.auto
  7. import uvicorn.protocols.http.auto
  8. import uvicorn.protocols.websockets.auto
  9. import uvicorn.lifespan.on
  10. from multiprocessing import Process, freeze_support
  11. def handle_shutdown(signum, frame):
  12. """关闭系统应用服务"""
  13. # 终止事件循环
  14. loop = asyncio.get_event_loop()
  15. loop.call_soon_threadsafe(loop.stop)
  16. sys.exit(0)
  17. if __name__ == "__main__":
  18. signal.signal(signal.SIGINT, handle_shutdown)
  19. signal.signal(signal.SIGTERM, handle_shutdown)
  20. # 控制台默认关闭输出信息,如果想要查看控制台输出,请单独启动服务 npm run dev-python
  21. print("python server is running at port:", PORT)
  22. # uvicorn会多创建一个进程,并且stdio独立于控制台,如果(开发时)出现进程没有关闭,可尝试关闭终端
  23. print("python server is running at port:", APP_RUN)
  24. isDebug = True if IS_DEBUG == "true" else False
  25. uvicorn.run(
  26. APP_RUN,
  27. host=APP_HOST,
  28. port=int(PORT),
  29. reload=isDebug,
  30. workers=int(APP_WORKS),
  31. )