uni-app 报错 errMsg: Response timeout for 10000ms, POST https://api.bspapp.com/server -1

uni-app 报错 errMsg: Response timeout for 10000ms, POST https://api.bspapp.com/server -1

开发环境 版本号 项目创建方式
uniCloud/App 未提及 未提及

操作步骤:

  • 云函数上传到云端,访问数据库,连续多几次就出错了

预期结果:

  • 云函数上传到云端的云函数和数据库之间不应该有一层防火墙

实际结果:

  • 云函数上传到云端的云函数和数据库之间通信弱爆了,多几次就出错

bug描述:

访问云函数所谓的并发真的太弱了现在。 因为防火墙的关系,云函数相当于每次访问数据库都用外网的接口https://api.bspapp.com/server 所以并发插入数据库太多时候,总会偶尔遇到errMsg: Response timeout for 10000ms, POST https://api.bspapp.com/server -1的错误。

我认为,客户没有直接访问数据库诸如clientDB,可以用外网的接口https://api.bspapp.com/server 防爬虫 DDOS之类的。 云函数本身访问数据库能不能不要用这种外网的https接口?并发量一上来肯定全是报错。


更多关于uni-app 报错 errMsg: Response timeout for 10000ms, POST https://api.bspapp.com/server -1的实战教程也可以访问 https://www.itying.com/category-93-b0.html

22 回复

此问题出现一般有两种情况。

本地网络不稳定
服务空间内的云函数,数据库等资源长时间未收到访问

一般有正常业务的空间,不会遇到情况2

更多关于uni-app 报错 errMsg: Response timeout for 10000ms, POST https://api.bspapp.com/server -1的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我也遇到这个问题了:Error: Response timeout for 10000ms, POST https://api-inner.next.bspapp.com/server -1 (connected: true, keepalive socket: false, socketHandledRequests: 1, socketHandledResponses: 0) headers: {} at e.$scope.function.invoke.then.catch.e (/tmp/function/@dcloudio/serverless/lib/aliyun/uni-cloud.js:1:51256) at <anonymous> 请求响应状态: fail

一般需要访问数据库的,或者请求其他网站数据的场景,并发数不要设置太高。会受云函数网络限制

用户一多,会不会也报这个?

回复 吴克: 单实例并发度设置小一些或者直接用1就行

回复 DCloud_uniCloud_WYQ: 10000 millisecond超时这个问题不仅仅存在于客户端中,在开发中也存在:比如项目刚开始上传所有schema的时候总会中断,不得不多几次上传才行

04:55:40.135 [阿里云:bigfile]上传数据集合Schema(uni-id-users.schema.json) cURL error 28: Operation timed out after 10000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 04:55:40.165 [阿里云:bigfile]上传所有数据集合Schema和数据库扩展校验函数(uni-id-users.schema.json)被取消

回复 吴克: 你用的什么地区的哪个运营商的网络?

回复 DCloud_uniCloud_WYQ: 本身是上海电信,阿里云。这个和地区没多大关系,只要是你们开发unicloud的同学肯定能遇到,比如你们官方的uni-admin项目,你狂点菜单管理试试,一定会出现: 15:03:51.226 [本地调试]“收到clientDB请求:表名:acollection” 15:03:51.732 [本地调试]“收到clientDB请求:表名:acollection,返回数据:” {“code”:0,“message”:"",“systemInfo”:Array(0),“affectedDocs”:10,“data”:Array(10)} 15:03:55.084 [本地调试]“收到clientDB请求:表名:opendb-admin-menus” 15:03:55.229 [本地调试]“收到clientDB请求:表名:opendb-admin-menus” 15:03:55.404 [本地调试]“收到clientDB请求:表名:opendb-admin-menus” 15:03:55.555 [本地调试]“收到clientDB请求:表名:opendb-admin-menus,返回数据:” {“code”:0,“message”:"",“systemInfo”:Array(0),“affectedDocs”:9,“data”:Array(9)} 15:03:55.596 [本地调试]“收到clientDB请求:表名:opendb-admin-menus” 15:03:56.008 [本地调试]“收到clientDB请求:表名:opendb-admin-menus,返回数据:” {“code”:0,“message”:"",“systemInfo”:Array(0),“affectedDocs”:9,“data”:Array(9)} 15:03:56.021 [本地调试]“收到clientDB请求:表名:opendb-admin-menus” 15:03:56.442 [本地调试]“收到clientDB请求:表名:opendb-admin-menus,返回数据:” {“code”:0,“message”:"",“systemInfo”:Array(0),“affectedDocs”:9,“data”:Array(9)} 15:03:56.448 [本地调试]“收到clientDB请求:表名:opendb-admin-menus” 15:03:56.588 [本地调试]“SYSTEM_ERROR: errCode: | errMsg: Response timeout for 10000ms, POST https://api.bspapp.com/server -1 (connected: true, keepalive socket: false, socketHandledRequests: 1, socketHandledResponses: 0)\nheaders: {}”

回复 吴克: 我们联系阿里排查下,近期阿里云完成了数据库迁移,看下情况有没有好转

回复 DCloud_uniCloud_WYQ: 这个问题很久了,论坛也不止我一个人反应,你们自己开发也一定能遇到,不知道为啥拖了这么久。

回复 吴克: 这个只跟你本地网络和阿里云服务器通讯有关,如果是偶发大概率是本地网络不稳定导致的

回复 吴克: 下载schema不会连阿里的服务器是从DCloud服务器下载的,我怀疑你本地网络确实有问题

这个问题,到现在官方都还未解决~ 找不到解决办法!
DCloud_UNI_WYQ 这个人回答的是啥?? 官方能找个懂技术的来解决吗?

一年了,这问题还是没人管。有这个问题东西完全没法用啊

一般是长时间没人访问的服务空间本地运行时会遇到这个问题,后续阿里云会进行优化

开发环境时,可以把“连接本地云函数”改为“连接云端云函数”,我改后就正常了。

我怀疑dcloud这家公司回答问题的这几个人是不是真的在用自家的hbuilder开发,回答的都莫名其妙那么多人都是本地自己的问题是吧。不止这个问题,有时候问题回答还不如社区其他用户回答的。

一直都有这样的问题。 我想在发生错误的时候显示一个modal提示框显示错误信息,结果多次点击提交(譬如用户登录或者提交数据操作),第一次没反应,然后点击第二第三次,随后就会弹窗提示一大堆的超时信息。 这样的超时提示能不能给个比较好的处理办法? 不过我的是连接本地云函数调试。不知道云端会不会有这样的报错

你是阿里云还是腾讯云?我用的阿里云这个问题出现频率挺高的

回复 赵登云: 我的也是阿里云

这个错误是典型的云函数调用超时问题,主要原因是云函数通过公网访问数据库时网络延迟和并发限制导致的。

核心问题分析:

  1. 网络路径问题:云函数确实通过公网API网关(api.bspapp.com)访问数据库,而不是内网直连
  2. 超时限制:默认10秒超时对于高并发数据库操作可能不足
  3. 并发瓶颈:公网网关有并发限制,频繁请求容易触发限流

解决方案:

1. 优化云函数超时配置 在云函数目录的package.json中增加超时设置:

{
  "cloudfunction-config": {
    "timeout": 60
  }
}

将超时时间从默认10秒延长到60秒。

2. 实现请求队列和重试机制 在云函数中添加重试逻辑:

async function callWithRetry(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn()
    } catch (err) {
      if (i === maxRetries - 1) throw err
      await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)))
    }
  }
}

3. 批量操作减少请求次数 将多次插入合并为批量操作:

// 而不是循环插入
const db = uniCloud.database()
await db.collection('table').add(dataArray)
回到顶部