| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import asyncio
- import sys
- import uvicorn
- import signal
- from api import *
- from sockets.socket_server import *
- import uvicorn.loops.auto
- import uvicorn.protocols.http.auto
- import uvicorn.protocols.websockets.auto
- import uvicorn.lifespan.on
- from multiprocessing import Process, freeze_support
- from service.init_load_source import init_load_source
- def handle_shutdown(signum, frame):
- """关闭系统应用服务"""
- # 终止事件循环
- loop = asyncio.get_event_loop()
- loop.call_soon_threadsafe(loop.stop)
- sys.exit(0)
- async def run_server():
- # 启动uvicorn服务器
- isDebug = True if IS_DEBUG == "true" else False
- config = uvicorn.Config(
- APP_RUN,
- host=APP_HOST,
- port=int(PORT),
- reload=isDebug,
- workers=int(APP_WORKS),
- loop="auto",
- )
- server = uvicorn.Server(config)
- await server.serve()
- async def main():
- # await init_load_source().load_source()
- # await run_server()
- await asyncio.gather(run_server(), init_load_source().load_source())
- if __name__ == "__main__":
- if sys.platform == "win32":
- asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
- signal.signal(signal.SIGINT, handle_shutdown)
- signal.signal(signal.SIGTERM, handle_shutdown)
- print("python server is running at port:", PORT)
- print("python server is running at port:", APP_RUN)
- loop = asyncio.new_event_loop()
- try:
- loop.run_until_complete(main())
- finally:
- loop.close()
- # isDebug = True if IS_DEBUG == "true" else False
- # uvicorn.run(
- # app=APP_RUN,
- # host=APP_HOST,
- # port=int(PORT),
- # reload=isDebug,
- # loop="auto",
- # )
|