当前位置: 首页 > article >正文

httpx.AsyncClient()的stream方法设置timeout超时

目录

  • 问题描述
  • 解决办法

问题描述

使用httpx的异步请求AsyncClient调用stream方法请求流式接口,如果接口返回内容比较慢(比如第一个字符返回用时5s),客户端主动关闭流式通道,导致当后端接口准备好数据后,返回报错“管道已关闭”

解决办法

调用stream方法增加参数timeout

    async def get_answer(self, job, index, text, callback):
        async with httpx.AsyncClient() as c:
            try:
                url = "流式接口地址api" 
                headers = {
                    'Authorization': g.TOKEN,
                    'Clientid': g.CLIENT_SIGN,
                    "Accept": "*/*",
                    "Cache-Control": "no-store"
                }
                params = {
                    "question": text
                }
                # 重点 增加超时配置
                timeout_config = Timeout(5.0, read=10.0)  # 总超时设为5秒,但读取超时设为10秒
                async with c.stream('GET', url, headers=headers, params=params, timeout=timeout_config) as response:
                    content_type = response.headers.get('content-type', '').lower()
                    if 'text/event-stream' in content_type:     # 流式回答
                        all_answer = ""
                        async for data in EventSource(response).aiter_sse():
                            if data:
                                all_answer += data.data
               # 省略代码
            except Exception as e:
                print(e)

http://www.kler.cn/a/611492.html

相关文章:

  • Python:gevent综合案例,进程线程协程对比
  • Go听课笔记
  • AIMB-ASMB-788B(PPC-MB-620B)RAID驱动安装(笔记版)
  • 数据联邦技术与工具:构建实时数据访问的架构实践
  • MySQL-5.7.37安装配置(Windows)
  • 【Godot】导出为安卓安装包
  • 基于SpringBoot的实现的客户关系管理系统(CRM)(源码+数据库)
  • JPA、Hibernate、 Spring Data JPA 以及Mybatis的关系(Java)
  • ctfshow做题笔记—栈溢出—pwn73、pwn74
  • AR沙盘模型制作技术解析,赋能企业展厅创新
  • 线性模型与非线性扩展
  • 管道(Linux)
  • SpringCould微服务架构之Docker(2)
  • 使用Ollama(自定义安装位置)与RagFlow构建本地知识库
  • WPF 与 C# 融合开发:从基础到高级应用(一)
  • Mysql update更新数据执行流程
  • Maven工具学习使用(四)——仓库
  • 智能科技与美学融合,赵伟辰荣膺 2025 iF 设计大奖
  • 量化研究--小果聚宽交易系统上线高速服务器,提供源代码
  • C#从入门到精通(2)