for (let i = 0; i < 1500; i++) {
await new Promise((resolve) => setTimeout(resolve, 100))
console.log(`${i}`)
}
console.log(`all-done`)
- 发布:2021-11-26 11:41
- 更新:2021-11-30 17:33
- 阅读:375
产品分类: uniCloud/App
示例代码:
操作步骤:
如上
如上
预期结果:
如上
如上
实际结果:
如上
如上
bug描述:
Promise+await比较多的情况下,容易崩溃,以下代码在服务器端必然崩溃。而且没有报错信息,就是一个失败,前面执行的代码打印的日志也能看见。
最佳回复
昵称554554 (作者)
说下结论吧,在阿里云上面:
- 定时器触发的函数,可以执行到600秒;
- client-call的方式触发,可以执行到10秒多点;
测试方法:
- 设置超时时间为600
- 代码里面循环千次,每次sleep 1秒
- 日志方式做了俩个,一个是控制台log,另外一个是写了一个表做日志
测试结果:
- 定时器可以实实在在的执行600秒,控制台日志有点乱序,但是数据表的日志是完善的;
- client call可以执行到10秒到12秒,客户端超时,而且服务器端也abort了。
其它:
- 官方更新后的文档说明【非定时触发最高只支持60s超时时间】,这个也是误导性的。client call的服务器端执行时间就是10秒,不是60秒。如果说客户端超时10秒,但是服务器端还可以继续执行50秒,那就可以将结果写入到临时表,然后client去loop结果,这样就可以突破10秒限制了。
- 腾讯云的云函数测试效果好些,但是即使是付费版,多数资源还不如阿里云的免费版。
- 我个人是做服务器端的,之前管的app日活千万多,现在的也是几百万。重量级的项目做多了烦了,第一次看见uniapp和unicloud,真的是欣喜若狂。所以希望这个平台越来越完善,看见他走到天尽头。不过在正式使用中,发现很多细节需要打磨,产品文档和功能。写个普通的小玩意,增删改查的的确很容易,超级容易!超级帅!但是系统级的工作稍微繁复一点,就有很多不便利。
是不是云函数超时了,或者内存超出了
-
回复 e***@sina.com: 如果是阿里云的话你看到的失败可能只是日志服务的失败。另外你这个云函数执行了150秒是怎么测试的?定时触发还是客户端请求的
2021-11-29 11:36
-
昵称554554 (作者)
回复 DCloud_uniCloud_WYQ: 没有执行那么久,我测试时候,做了很多的不同场景,所以就写个大点的数。
实际上一般执行很难超过13秒,设置的超时是55秒,或者550秒,结果都一样。
范例代码很简单,可以拷贝做个试验,结果一目了然,就不用这样反复的来回沟通了。
我也用了nodejs12来处理,还是跟8一样的。
最大的差别是:本地化运行云函数,就正常的。2021-11-30 11:11
-
昵称554554 (作者)
回复 DCloud_uniCloud_WYQ: 是啊!!我刚才发现了你们修改了控制台的说明,也在别的文档里面找到了!!!
真的是太疯狂了。。。。
文档写的是那样,执行的是另外一样,我发帖时候就怀疑了是10秒的平台限制,但是看见官方的答复一直没有这个。2021-11-30 16:28
DCloud_uniCloud_WYQ
使用中有任何问题都可以提出来,我们会积极采纳用户的意见
2021-11-30 19:43
昵称554554 (作者)
回复 DCloud_uniCloud_WYQ: 看见你们会积极采纳,所以我也积极认真的提 :)
2021-12-01 02:39