FastAPI与集成websocket客户端冻结,我应该如何组合这些?

2024-06-08 19:06:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在为一个小型后端使用FastAPI。RESTAPI部分可以正常工作。在下一步中,我需要查询websocket API并在FastAPI中处理它。我想过滤和转发传入的数据。当我启动应用程序时,websocket客户端开始运行,但实际的FastAPI在此之后不工作

我如何构建一个可以作为websocket客户端和服务器工作的FastAPI

这是我的密码:

    from fastapi import FastAPI
from routers import foo
from services import bar as bar

app = FastAPI()

app.include_router(foo.router)

@app.on_event('startup')
async def startup_event():
    await bar.wh_client()



class wh_client:
def __init__(self, ):
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://xx.xx.xx.xx:xxxxx/",
                                     on_message=self.on_message,
                                     on_error=self.on_error,
                                     on_close=self.on_close)
    self.ws = ws
    self.ws.on_open = self.on_open
    self.ws.run_forever()

def on_message(self, message, stuff):
    print(message)
    return message

def on_error(self, error):
    return error

def on_close(self):
    print("### closed ###")

def run(self, *args):
    global driver
    driver = True
    while driver:
        try:
            time.sleep(1)
            self.ws.send('message')
        except KeyboardInterrupt:
            driver = False
    time.sleep(1)
    self.ws.close()
    print("thread terminating...")

def on_open(self, foo):
    thread.start_new_thread(self.run, ())

Tags: fromimportselfmessageclosewsfooon