暮溟
暮溟
  • 发布:2023-05-11 00:22
  • 更新:2023-05-11 11:14
  • 阅读:1271

关于unicloud的request请求超时时间,希望有个系统全面的答案

分类:uniCloud

首先说明项目情况

前端:微信小程序+支付宝小程序
后端:unicloud云函数 + 云函数中有uniCloud.httpclient.request请求第三API

问题:

1.首先发现微信端、支付宝端小程序进行云函数请求有超时时间限制
比如微信最大60s,支付宝最大30s
2.然后前端进行云函数请求也有超时时间限制,阿里云和腾讯云的云函数超时时间又各不相同
阿里云函数超时时间40s?
腾讯云函数超时时间30s?
3.阿里和腾讯云函数中uniCloud.httpclient.request超时时间又不相同
实测阿里云服务空间中云函数进行uniCloud.httpclient.request请求谷歌超时时间30000ms左右,虽然我设置了3001000ms
实测腾讯云服务空间中云函数进行uniCloud.httpclient.request请求谷歌超时时间120000ms左右,虽然我设置了300
1000ms

我的问题:项目中使用云函数,云函数中有uniCloud.httpclient.request请求第三方API,这个API超时时间是300s,而且是扣费的
如果扣费的第三方API还未返回,比如60s过后, 云函数中的uniCloud.httpclient.request就超时了,或者云函数就超时了,就白白扣费了

所以需要的是:
(1)尽可能提高阿里云函数中uniCloud.httpclient.reques调用第三方扣费API的超时时间,设置了没有用,现在无法达到300s
(2)尽可能提高云函数的超时时间,阿里云和腾讯云的云函数不一样,找了多次未找到明确答案
在文档中
https://uniapp.dcloud.net.cn/uniCloud/cf-functions.html#timeout 有提到
阿里云定时任务触发最大支持600秒超时时间,非定时触发时超时时间为40秒。
腾讯云定时任务触发最大支持900秒超时时间。非定时触发时超时时间为30秒。
但是实践发现,我使用的腾讯云函数许多超过30s后仍然有返回结果,所以怀疑这个准确性!

在云函数中,实际测试一段耗时任务:

            let allTestNum = 0  
    for (let i = 0; i < 300; i++) {  
        let testNum = await new Promise((resolve, reject) => {  
            setTimeout(() => {  
                resolve(1)  
            }, 1000)  
        })  
        allTestNum = allTestNum + testNum  
        console.log("allTestNum: ", allTestNum);  
    }  

通过云函数日志查看测试结果:
阿里云函数结果只有40+秒,最终执行状态是未知
[inquiry-detail/ac1cc3031683737234844168686/39429ms/DEBUG] allTestNum: 39
[inquiry-detail/ac1cc3031683737234844168686/40430ms/DEBUG] allTestNum: 40
[inquiry-detail/ac1cc3031683737234844168686/41431ms/DEBUG] allTestNum: 41
[inquiry-detail/ac1cc3031683737234844168686/42432ms/DEBUG] allTestNum: 42
[inquiry-detail/ac1cc3031683737234844168686/43434ms/DEBUG] allTestNum: 43

腾讯云函数结果能跑完300+秒,云函数并未因为前端超时而中断执行任务,函数最终执行状态是失败
2023-05-11T01:03:38.78Z "allTestNum: " 298
2023-05-11T01:03:39.79Z "allTestNum: " 299
2023-05-11T01:03:40.80Z "allTestNum: " 300

与文档所说不一致,所以各家云函数能执行任务的时间到底是多少?
云函数中使用uniCloud.httpclient.request请求第三方API超时时间又是多少呢?

(3)尽可能提高小程序前端调用云函数的超时时间(好像各个平台有不同的限制)

希望有地方能详细搞清楚

-各端小程序调用云函数的超时时间限制
-云函数设置的超时时间限制
-阿里和腾讯云函数中http请求第三方的超时时间限制
-小程序前端+云函数+云函数中的http请求,最终决定的超时时间

最终能解决我的问题,前端小程序请求云函数,云函数调用http请求第三方API,整个过程的超时时间能有300s或者100s?

2023-05-11 00:22 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

此文档已调整

https://uniapp.dcloud.net.cn/uniCloud/cf-functions.html#timeout

实测阿里云服务空间中云函数进行uniCloud.httpclient.request请求谷歌超时时间30000ms左右,虽然我设置了3001000ms,实测腾讯云服务空间中云函数进行uniCloud.httpclient.request请求谷歌超时时间120000ms左右,虽然我设置了3001000ms

此问题也是由上面文档中的表现引发的。httpclient.request超时时间本质上是一样的

要回复问题请先登录注册