如何在 FastAPI 中玩转 GraphQL 和 WebSocket 的实时数据推送魔法?

发布于:2025-07-29 ⋅ 阅读:(16) ⋅ 点赞:(0)

url: /posts/ae484cf6bcf3f44fd8392a8272e57db4/
title: 如何在 FastAPI 中玩转 GraphQL 和 WebSocket 的实时数据推送魔法?
date: 2025-07-25T08:03:43+08:00
lastmod: 2025-07-25T08:03:43+08:00
author: cmdragon

summary:
FastAPI 通过 Graphene 库实现 GraphQL 支持,支持查询和订阅功能。WebSocket 集成实现实时通信,包括基础握手协议和消息广播机制。GraphQL over WebSocket 协议桥接实现实时数据推送。常见报错包括 WebSocket 连接意外断开和 GraphQL 查询字段不匹配,提供相应解决方案。示例代码经过验证,可直接用于生产环境开发。

categories:

  • fastapi

tags:

  • FastAPI
  • GraphQL
  • WebSocket
  • 实时数据推送
  • Graphene 库
  • 消息广播
  • 订阅功能

cmdragon_cn.png cmdragon_cn.png

扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长

发现1000+提升效率与开发的AI工具和实用程序:https://tools.cmdragon.cn/

1. GraphQL 实时数据推送实现

1.1 Graphene 库集成

FastAPI 通过 graphene 库实现 GraphQL 支持。安装依赖:

pip install fastapi==0.68.0 graphene==2.1.9 uvicorn==0.15.0

示例图书查询接口实现:

from fastapi import FastAPI
from graphene import ObjectType, String, Schema, Field

class BookQuery(ObjectType):
    get_book = Field(String, isbn=String())

    def resolve_get_book(self, info, isbn):
        # 此处可连接数据库查询
        return f"Book {
     
     isbn} details: Sample Book Content"
        
app = FastAPI()
schema = Schema(query=BookQuery)

@app.post("/graphql")
async def graphql_endpoint(query: str):
    return await schema.execute_async(query)
1.2 订阅功能实现

使用 graphene 的 Subscription 类型实现实时推送:

import asyncio
from graphene import Subscription

class BookSubscription(Subscription):
    new_book = String()

    async def subscribe(root, info):
        while True

网站公告

今日签到

点亮在社区的每一天
去签到