python 服务 fastapi

FastAPI系列教程09:常用FastAPI middleware中间件的详细使用 在FastAPI中已经内置了Starlette大量的middleware中间件,这些中间件可以初步用于OAuth2、CORS、Gzip等功能的实现。 阅读详情

fast api 服务

依赖安装:

pip install fastapi unicorn

import json
from fastapi import FastAPI

import os

os.environ['TZ'] = 'Asia/Shanghai'

async def call_http_get_service(url):
    async with aiohttp.ClientSession() as session:

        async with session.get(url) as response:
            return await response.text()

app = FastAPI()

@app.get("/myfist")
async def home(query:str):

    request_url=""

    response = await call_http_get_service(request_url)

    json_response = json.loads(response)

    correct_query=json_response.get("text_new",query)

    return {"data":correct_query}

服务执行:uvicorn correct_service:app --host 0.0.0.0 --port 22101

 方法一:基于fastapi进行流式服务返回。(支持对大文件或大文本的分阶段内容返回)

# -*-coding:utf-8-*-

import json

from fastapi import FastAPI

import os

import uvicorn

from fastapi.responses import StreamingResponse

os.environ['TZ'] = 'Asia/Shanghai'

app = FastAPI()

async def _gen():
    for i in range(10):
        yield {"data":i}

async def _stream_message():
    final_total_message = []

    async for answer_message in  _gen():
        yield "data: " + json.dumps(answer_message,ensure_ascii=False) + "\r\n"

@app.get("/basic_service_path")
async def chat():

    return StreamingResponse(_stream_message(),media_type="text/plain; charset=utf-8")

if __name__ == "__main__":

    uvicorn.run(app, host="0.0.0.0", port=PORT)

 方法二:(适合大模型的流式输出,有了标准的输出规范)

# -*-coding:utf-8-*-
import json
from fastapi import FastAPI

from sse_starlette.sse import ServerSentEvent, EventSourceResponse

import os
import uvicorn
os.environ['TZ'] = 'Asia/Shanghai'

app = FastAPI()

def _gen():
    for i in range(10):
        yield {"data": i}

def decorate(generator):
    for item in generator:
        yield ServerSentEvent(json.dumps(item, ensure_ascii=False), event='delta')

@app.get("/basic_service_path")

async def chat():
    return EventSourceResponse(decorate(_gen()), media_type="text/plain; charset=utf-8")

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=22104)

关于SSE流式处理的规范:使用FastAPI与aiohttp进行SSE响应开发 - 知乎 

 使用aiohttp流式结果的数据获取:

import aiohttp

async def post_service(llm_server_url,llm_server_path,data):

    async with aiohttp.ClientSession(llm_server_url) as session:

        async with session.post(llm_server_path, json=data) as response:

            async for chunk in response.content:

                decode_message = chunk.decode('utf8').strip("data:").strip("\r\n")

                if decode_message and "DONE" not in decode_message:

                    yield decode_message

 使用http方式获取流式结果:

def test():  
    url = r"http://127.0.0.1:8000/"  
    headers = {'Content-Type': 'text/event-stream'}  
    response = requests.get(url, headers=headers, stream=True)  
    for chunk in response.iter_content(chunk_size=1024, decode_unicode=True): 
        print(chunk) 

关于在离线(非联网)状态下,fastapi进行swagger接口查看:

Swagger UI使用文件: swagger-ui-bundle.js | swagger-ui.css

ReDoc使用该文件:redoc.standalone.js

项目文件结构

.
├── app
│   ├── __init__.py
│   ├── main.py
└── static
    ├── redoc.standalone.js
    ├── swagger-ui-bundle.js
    └── swagger-ui.css
from fastapi import FastAPI
from fastapi.openapi.docs import (
    get_redoc_html,
    get_swagger_ui_html,
    get_swagger_ui_oauth2_redirect_html,
)
from fastapi.staticfiles import StaticFiles

app = FastAPI(docs_url=None, redoc_url=None)

app.mount("/static", StaticFiles(directory="static"), name="static")


@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():
    return get_swagger_ui_html(
        openapi_url=app.openapi_url,
        title=app.title + " - Swagger UI",
        oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,
        swagger_js_url="/static/swagger-ui-bundle.js",
        swagger_css_url="/static/swagger-ui.css",
    )


@app.get(app.swagger_ui_oauth2_redirect_url, include_in_schema=False)
async def swagger_ui_redirect():
    return get_swagger_ui_oauth2_redirect_html()


@app.get("/redoc", include_in_schema=False)
async def redoc_html():
    return get_redoc_html(
        openapi_url=app.openapi_url,
        title=app.title + " - ReDoc",
        redoc_js_url="/static/redoc.standalone.js",
    )


@app.get("/users/{username}")
async def read_user(username: str):
    return {"message": f"Hello {username}"}

参考:Extending OpenAPI - FastAPI 

           fastapi离线使用swagger | lly.im

Python FastAPI 框架 操作Mysql数据库 增删改查 阅读详情

相关推荐

Python-FastAPI 异步博客开发(二) 通信逻辑篇

Frodo的第一个版本已经实现了,在下一个版本前,我将目前的开发思路整理成三篇文章,分别是数据篇、通信篇、异步篇。 博客地址 项目地址 本篇就来到实现具体功能的逻辑流程了,在Web应用汇总,我个人更倾向于将业务流程成为「通信」。因为是整个流程就是后台将数据组织加工发往前端,这个过程协议可以不同(http(s), websocket), 方法可能不同(rcp, ajax, mq), 返回的内容格式不同(json, xml, html(templates), 早年的Flash等); 刚才讲的是前后台通信,.

IMISer2016的博客 2095

【亲测免费】 FastAPI Sessions 使用指南

FastAPI Sessions 使用指南 FastAPI Sessions 是一个专为 FastAPI 设计的即用型会话库,它简化了在 FastAPI 应用中实现会话管理和认证的过程,同时保持高度的定制性和与生俱来的开发者友好性。本指南将带您深入了解此项目的结构、启动机制以及配置方法。 1. 目录结构及介绍 FastAPI-Sessions 的典型项目结构通常包括源码文件、配置相关文件等,虽然具...

gitblog_00351的博客 782

使用Python和FastAPI构建AI服务接口:从模型封装到Web服务

在人工智能领域,将模型封装为可调用的服务接口是实现模型应用化的关键环节。Python 的 FastAPI 是一个现代化的 Web 框架,因其高性能、灵活性和简洁性,成为构建 REST API 服务的绝佳选择。本文将详细讲解如何使用 FastAPI 将 AI 模型封装为 REST API 服务,涵盖 FastAPI 的基本使用、AI 模型的加载与推理、接口设计、性能优化,以及实际应用场景的示例。通过大量代码和注释,读者将学会如何快速开发、部署和扩展 AI 服务接口,为 Web 应用和移动端提供可靠的模型服务支

一个被知识诅咒的人 2603

16.FastAPI session

16.FastAPI session 在FastAPI中,要使用session,实际上是使用Starlette Session,Starlette Session是作为一个中间件存在的,所以需要安装Starlette Session。执行命令: pip install starlette-session 16.1使用Redis作为session存储 代码如下: from fastapi import FastAPI from redis import Redis from starlette

chenhaiy的博客 8091

Python asyncio 与 FastAPI:打造超快速异步 Web 服务

通过asyncio与FastAPI的结合,你已掌握了构建高效异步Web服务的核心能力。下一步,不妨用它来优化你的现有项目,或尝试开发一个高并发的实时API——异步编程的魅力,等你来探索!:FastAPI 基于ASGI(异步服务器网关接口),搭配Uvicorn/Gunicorn等ASGI服务器,可同时处理数百个异步请求(无需多线程/进程)。这正是异步编程在高并发Web服务中的核心价值:用更少资源(CPU/内存)处理更多请求。:支持异步中间件(如日志、鉴权)和异步依赖函数(如异步数据库连接)。

AI Python 编程之道的博客 1418

Python FastAPI 构建微服务网关的实践

本文旨在为开发者和架构师提供使用FastAPI构建微服务网关的完整实践指南。我们将覆盖从基础概念到高级特性的所有内容,包括路由转发、负载均衡、认证授权、限流熔断等核心功能实现。本文首先介绍微服务网关的基本概念,然后深入FastAPI框架特性,接着详细讲解网关核心功能的实现,最后通过完整项目案例展示实际应用。微服务网关:系统的统一入口,负责请求路由、组合和协议转换FastAPI:基于Starlette和Pydantic的现代Python Web框架反向代理:代表客户端从一个或多个服务器检索资源的服务器。

AI Python 编程之道的博客 1357

【Python】FastAPI服务注册到Nacos

关于Python使用fastapi将服务注册到nacos

肖御的博客 3451

1、利用 FastAPI 构建 Python 微服务全解析

本文全面解析了如何利用 FastAPI 构建高性能的 Python 微服务应用。内容涵盖从环境搭建、REST API 设计与实现、核心特性探索,到依赖注入、微服务架构设计等多个方面。适合具备 Python 基础和 API 开发经验的开发者学习和参考,旨在帮助读者掌握使用 FastAPI 构建企业级微服务应用的核心技能。

c7d8e的博客 132

FastAPI 核心概念:构建高性能的 Python Web 服务

本文详细解析了如何利用 FastAPI 构建高性能的 Python Web 服务,帮助开发者从零开始创建功能丰富、响应迅速的 API。结合完整的代码示例和分步操作指导,文章深入讲解了 FastAPI 的核心概念,包括路径、操作、装饰器、HTTP 方法等,带来直观清晰的学习体验。通过掌握路径操作装饰器的使用及 Uvicorn 的启动配置,你将能快速构建出强大、可靠的 Python Web 应用,夯实高效 API 开发的基础。

敲代码别忘了喝上一杯凉白开。 1076

fastAPI-aiohttp-example:如何使用fastAPI和aiohttp客户端

带有客户端的完整 这是FastAPI的一个示例,但是您可以将此逻辑与任何异步(ASGI)Web框架一起使用 实现的逻辑: (带有aiohttp的假服务器模拟答案) 在FastAPI启动时打开ClientSession 在fastAPI关闭时关闭ClientSession 测验 fastAPI端点测试 aiohttp测试

Python库 | fastapi-redis-session-0.1.5.tar.gz

资源分类:Python库 所属语言:Python 资源全名:fastapi-redis-session-0.1.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059

探索FastAPI:构建高效Python微服务的利器

探索FastAPI:构建高效Python微服务的利器 项目介绍 在现代软件开发领域,微服务架构因其灵活性和可扩展性而受到广泛欢迎。《Building Python Microservices with FastAPI》是一本由Packt Publishing出版的书籍,旨在指导开发者如何利用FastAPI框架构建安全、可扩展且结构化的Python微服务。FastAPI,作为一个基于异步服务器网关接...

gitblog_00213的博客 854

【粉丝福利社】利用FastAPI构建Python微服务

本书将向你详细介绍FastAPI框架及其组件,以及如何联合应用这些组件与一些第三方工具来构建微服务应用程序。读者需要具备一些Python编程背景、API开发原理知识以及对创建企业级微服务应用程序背后原理的理解。这不仅仅是一本参考用书,它还提供一些代码蓝图,在阐释和演示各章主题的同时,还可以帮助开发人员解决实际应用问题。本书读者本书适用于想要学习如何使用FastAPI框架来实现微服务的Python Web开发人员、高级Python用户和使用Flask或Django的后端开发人员。

愚公智库 10万+

从内参矩阵到归一化平面:揭秘相机成像的标准化核心

本文深入解析了相机成像中的核心概念——归一化平面。通过拆解内参矩阵(包含焦距、主点等参数)的作用,详细阐述了如何将像素坐标转换为与具体相机硬件无关的归一化坐标。这一标准化过程是计算机视觉算法(如多相机系统对齐、视觉SLAM)实现跨设备通用性的关键,能有效提升算法的鲁棒性和泛化能力。

opencv7vision的博客 449

ABAP BAPI_PRODORD_CHANGE函数详解:如何高效重读生产订单主数据

本文深入解析ABAP BAPI_PRODORD_CHANGE函数在生产订单主数据高效处理中的应用。通过详细讲解函数架构、主数据重读机制及实战代码示例,帮助开发人员掌握生产订单数据的精准读取与更新技术,提升SAP系统集成与自动化处理效率。

weixin_29207149的博客 463

大模型新基座,基于FastAPI,利用Python开发MCP服务器_fastapi mcp

别被MCP协议吓退!Python服务器搭建超简单。微信搜索关注《AI科技论谈》Anthropic发布的MCP协议,能让AI智能体与应用程序连接更顺畅。不少开发者对它感到困惑,其实为Python应用搭建相关服务器并不复杂。在搭建前,先来了解下为何要采用该协议。

jennycisp的博客 954

DINOv3 网络结构解析:从 ViT 到 ConvNeXt 的双路线设计

本文深入解析了DINOv3网络结构的双路线设计,包括ViT和ConvNeXt两种主干架构。ViT路线通过轴向旋转位置编码解决了传统ViT对固定分辨率的依赖,而ConvNeXt路线则优化了卷积设计,提升了实时处理能力。文章还探讨了Gram Anchoring、混合自监督目标等关键技术,展示了DINOv3在多任务和多模态应用中的强大潜力。

weixin_29214199的博客 563

从底层搭建Python微服务之FastAPI与Docker部署

这个错误是因为我使用的是学校的校园网,不可以访问 DockerHub ,所以需要使用国内的镜像,使用一个加速器即可,可以参考。运行安装包,等待出现下图界面,提示是否创建快捷方式,根据个人喜好勾选。如何提示需要重启电脑记得重启电脑,因为重启后会自动安装WSL。运行需要一点时间,如果结果如下,说明Docker创建镜像成功。2、传入的参数一定要满足自己设置的http网址的层级格式。确保你使用正确的 URL 格式访问你的应用。1、传入参数的时候不能多传,也不能少传。3、传入的参数要满足函数设置的参数类型。

m0_69267900的博客 2139

CAPL编程入门:从零开始掌握汽车通信脚本语言

本文详细介绍了CAPL编程的基础知识,从开发环境搭建到核心语法精要,再到总线通信实战和高级调试技巧。CAPL作为汽车通信脚本语言,专为CAN、LIN等网络协议设计,帮助工程师高效完成车载网络测试。通过实战案例和性能优化建议,读者可以快速掌握CAPL编程技能。

s1t2u3的博客 978

PyTorch 面试题及详细答案120题(54-70)-- 模型训练与评估

本文介绍了PyTorch模型训练的基本流程和核心概念。主要内容包括: 模型训练基本流程:通过代码示例展示了数据准备、模型定义、损失函数和优化器选择、训练循环(前向传播、反向传播、参数更新)的完整过程,并包含验证集评估的实现。 训练过程中的关键概念: Epoch:完整遍历一次训练集 Batch:将数据分成小批次 Iteration:一个Batch的参数更新过程 三者关系:1 Epoch = N/B Batch = N/B Iteration(N为样本数,B为batch_size) PyTorch数据加载机制:

大剑师兰特的GIS世界 488

【亲测免费】 使用FastAPI构建Python微服务教程

使用FastAPI构建Python微服务教程 项目介绍 本项目名为“Building Python Microservices with FastAPI”,由Packt Publishing出版。FastAPI是一个基于异步服务器网关接口(ASGI)的框架,适用于构建现代、可管理且快速的微服务。由于其异步核心平台,FastAPI在性能、可靠性和可扩展性方面优于基于WSGI的Django和Flask...

gitblog_00335的博客 1261

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1151

使用 FastAPI 整合 gRPC 构建 Python 微服务

为何选择了 FastAPI 和 gRPC? 我们团队内部早期使用的 Django 开发的海外金融产品,后续考虑转型到微服务架构,做了一些调研之后,决定选择 FastAPI 和 gRPC。Python编程学习资料点击免费领取 FastAPI 完全从异步IO思维整合出来的框架,在 Web 领域异步IO的意义比较大。基于 Encode 团队(开发过大名鼎鼎的 Django REST Framework)的新作品:Starlette gRPC 在 RPC 之块,Python 还有一个有名的框架 namek

m0_63171455的博客 3961

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

王老师青少年编程 3392

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python FastAPI 服务端渲染的实现思路

目的在于全面介绍如何使用 Python 的 FastAPI 框架实现服务端渲染。范围涵盖了从理论原理到实际代码实现,包括核心概念的讲解、算法原理的剖析、数学模型的分析、项目实战案例的展示以及实际应用场景的探讨等方面。本文首先对相关背景进行介绍,接着阐述核心概念与联系,包括服务端渲染的原理和架构。然后详细讲解核心算法原理和具体操作步骤,通过 Python 源代码进行说明。再运用数学模型和公式对其进行进一步分析,并举例说明。之后通过项目实战给出实际代码案例和详细解释。随后介绍实际应用场景,推荐相关的工具和资源。

AI Python 编程之道的博客 1164

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: gpu 相关知识
下一篇: ASR语音识别纠错-fast correct
会发paper的学渣
博客等级 码龄15年 171粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值