RWKV-Runner/backend-python/main.py

65 lines
1.4 KiB
Python
Raw Normal View History

2023-05-06 12:17:39 +00:00
import os
2023-05-17 03:39:00 +00:00
import sys
2023-05-06 12:17:39 +00:00
2023-05-20 15:34:33 +00:00
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
import psutil
2023-06-03 09:12:59 +00:00
from fastapi import Depends, FastAPI
2023-05-06 12:17:39 +00:00
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
2023-05-07 09:27:54 +00:00
from utils.rwkv import *
from utils.torch import *
from utils.ngrok import *
2023-06-03 09:12:59 +00:00
from utils.log import log_middleware
2023-07-25 08:11:17 +00:00
from routes import completion, config, state_cache, midi
2023-05-07 09:27:54 +00:00
import global_var
2023-05-06 12:17:39 +00:00
2023-06-03 09:12:59 +00:00
app = FastAPI(dependencies=[Depends(log_middleware)])
2023-05-06 12:17:39 +00:00
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
2023-05-07 09:27:54 +00:00
app.include_router(completion.router)
app.include_router(config.router)
2023-07-25 08:11:17 +00:00
app.include_router(midi.router)
app.include_router(state_cache.router)
2023-05-07 09:27:54 +00:00
2023-05-06 12:17:39 +00:00
2023-05-17 03:39:00 +00:00
@app.on_event("startup")
2023-05-06 12:17:39 +00:00
def init():
2023-05-07 09:27:54 +00:00
global_var.init()
state_cache.init()
2023-05-06 12:17:39 +00:00
set_torch()
if os.environ.get("ngrok_token") is not None:
ngrok_connect()
2023-07-26 14:24:26 +00:00
@app.get("/", tags=["Root"])
2023-05-06 12:17:39 +00:00
def read_root():
2023-06-03 09:12:59 +00:00
return {"Hello": "World!"}
2023-05-06 12:17:39 +00:00
2023-05-07 09:27:54 +00:00
2023-07-26 14:24:26 +00:00
@app.post("/exit", tags=["Root"])
2023-05-07 14:48:52 +00:00
def exit():
2023-05-07 09:27:54 +00:00
parent_pid = os.getpid()
parent = psutil.Process(parent_pid)
for child in parent.children(recursive=True):
child.kill()
parent.kill()
2023-05-06 12:17:39 +00:00
if __name__ == "__main__":
2023-05-24 14:03:30 +00:00
uvicorn.run(
"main:app",
port=8000 if len(sys.argv) < 2 else int(sys.argv[1]),
host="127.0.0.1" if len(sys.argv) < 3 else sys.argv[2],
)