uniCloud.callFunction 请求 AI 利用 uniCloud.SSEChannel 后请求 120 秒中断无法接收

uniCloud.callFunction 请求 AI 利用 uniCloud.SSEChannel 后请求 120 秒中断无法接收

bug描述:

现在在做 AI 回答,利用uniCloud.callFunction 请求 openai 接口,利用 const channel = new uniCloud.SSEChannel(); // 创建消息通道;

支付宝空间,uniCloud.callFunction不管在哪配置各类参数,始终突破不了 120 秒超时瓶颈!

120 秒超时后uniCloud.SSEChannel消息通道也关闭了,导致 AI 回答的东西后续的文字中断,这个怎么解?

操作步骤:

预期结果:


实际结果:



2 回复

针对支付宝小程序中uniCloud.callFunction 120秒超时限制导致SSEChannel中断的问题,建议采用以下解决方案:

  1. 分片请求方案:
  • 将长请求拆分为多个短请求(每次<120秒)
  • 前端维护会话状态,每次请求带上上下文
  • 服务端实现分片处理逻辑
  1. 使用云对象替代云函数:
// 云对象方案
module.exports = {
  async getAIResponse(data) {
    const channel = new uniCloud.SSEChannel()
    // 处理逻辑...
    return {
      channel
    }
  }
}
  1. 前端轮询方案:
  • 首次请求返回任务ID
  • 定时查询任务状态
  • 通过SSEChannel推送分片结果
  1. 支付宝特定优化:
// 支付宝需特殊处理
if(process.env.UNI_PLATFORM === 'mp-alipay') {
  // 实现分片逻辑
}
回到顶部