Skip to content

你好作者 @CoderCharm 我将 mongodb 以及 ws 注册到了 fastapi 组件,我可以 PR 到此吗? #15

Description

@PY-GZKY

就像这样

def register_mysql(app: FastAPI):
    # 添加数据库连接和关闭事件
    @app.on_event("startup")
    async def connect_to_mysql():
        await database.connect()
        logger.debug("MYSQL 数据库初始化成功 ... DONE")
        await database.disconnect()

def register_mongodb(app: FastAPI):
    # 添加数据库连接和关闭事件
    @app.on_event("startup")
    async def connect_to_mongo():
        try:
            db.client = AsyncIOMotorClient(settings.MONGODB_URL,
                                           maxPoolSize=settings.MAX_CONNECTIONS_COUNT,
                                           minPoolSize=settings.MIN_CONNECTIONS_COUNT)
            logger.debug("MONGODB 数据库初始化成功 ... DONE")
        except:
            logger.error("MONGODB 数据库初始化失败 ... DONE")

    @app.on_event("shutdown")
    async def close_mongo_connection():
        db.client.close()
        logger.debug("MONGODB 数据库连接关闭 ... DONE")


def register_ws(app: FastAPI):
    @app.websocket("/ws/{taskId}")
    async def websocket_endpoint(websocket: WebSocket, taskId):
        await notifier.connect(websocket)
        try:
            if taskId:
                recent_msgs = query_task_log(taskId)  # 根据 taskId 查询历史日志并传输到页面-代码
                print(recent_msgs)
                for msg in recent_msgs:
                    await websocket.send_json(msg)
            while True:
                data = await websocket.receive_text()
                # await websocket.send_json(data)
                await notifier.push(data)
        except WebSocketDisconnect:
            notifier.remove(websocket)

    @app.on_event("startup")
    async def connect_to_ws():
        await notifier.generator.asend(None)
        logger.debug("WEBSOCKET 连接初始化成功 ... DONE")

看到作者基于 fastapi 官方的开发模板改良,心中甚是激动啊

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions