知道原因了,是因为: Let's Encrypt 品牌 SSL 证书根证书将于2021年9月30日停用旧版根证书(Root CA)。 为避免您的业务受到影响,建议您尽快自查正在使用的 Let's Encrypt 品牌 SSL 证书是否存在该问题。
"Error: certificate has expired"是什么过期了?"name": "RequestError", "message": "Error: certificate has expired", "cause": { "code": "CERT_HAS_EXPIRED" }, "error": { "code": "CERT_HAS_EXPIRED" }, "options": { "method": "POST", "uri": "https://aaa.cn:1xxx/wsutil/update" 在云函数调用里发出一个http post,之前都是好的,最近没有任何更新,今天突然这样了。 request合法域名配置是好的,搞不清到底什么?怎么过期了?
2021-10-01遇到一样的问题,只要通过httpapi调用云函数,就有很高的机率执行两次。我觉得不像是request-promise的问题,一是因为它更久经考验,二是如果是rp重复发了,应该有两个response,实际上收到的response只有一个,而且是system error hint。更怀疑是云函数通过httpapi调用时有问题,希望官方调查给与答复。 请问楼主有找到症结吗?
httpapi方式调用有request-promise同步请求的云函数会执行两次问题: http api 云函数调用经常报系统错误。 过程: 有两个小程序分别各自有一个云函数, 记做 小程序a 有云函数 voiceCall 小程序b 有云函数 voiceCallForOther voiceCall 使用http api方式调用 voiceCallForOther --------------------------------------------------------------------------------------------------------- voiceCall 的调用日志 2019-07-04 18:55:35调用成功 日志内容 Request ID: 402f3ba3-9e4a-11e9-ac86-525400681fe1 执行时间: 1830.61ms内存使用: 19.49 MB 返回结果 {"voiceUrl":"","message":"fail"} 日志 START RequestId: 402f3ba3-9e4a-11e9-ac86-525400681fe1 Event RequestId: 402f3ba3-9e4a-11e9-ac86-525400681fe1 中途http api 调用voiceCallForOther的响应结果 { errcode: -1, errmsg: 'system error hint: [X1z6ta07363040!]' } ------------------------------------------------------ voiceCallForOther 的 响应 居然有两条 2019-07-04 18:55:36调用成功 日志内容 Request ID: 40e47bbf-9e4a-11e9-a5c2-525400b2c41b 执行时间: 3814.51ms内存使用: 1.16 MB 返回结果 {"resultFileURL":"","resultFileID":"","message":"OK"} 日志 START RequestId: 40e47bbf-9e4a-11e9-a5c2-525400b2c41b Event RequestId: 40e47bbf-9e4a-11e9-a5c2-525400b2c41b 2019-07-04 18:55:37调用成功 日志内容 Request ID: 415ccd29-9e4a-11e9-a5c2-525400b2c41b 执行时间: 1845.12ms内存使用: 21.29 MB 返回结果 {"resultFileURL":"","resultFileID":"","message":"OK"} 日志 START RequestId: 415ccd29-9e4a-11e9-a5c2-525400b2c41b Event RequestId: 415ccd29-9e4a-11e9-a5c2-525400b2c41b 总结调用 voiceCall 云函数使用 http api invokecloudfunction 方式调用 voiceCallForOther 云函数 ,voiceCallForOther 云函数会执行两次, 所以voiceCall 总是收到 系统错误的返回结果 { errcode: -1, errmsg: 'system error hint: [X1z6ta07363040!]' } 请问为什么出现这种结果?如何修正? ----------------------------------------------------------------------------------------------------------------- 找到原因 经过查证,是voiceCallForOther 云函数里面 有个函数 (rp为request-promise) function getAccessToken(subscriptionKey) { let options = { method: 'POST', uri: uri, headers: { 'Ocp-Apim-Subscription-Key': subscriptionKey } } return rp(options); } var accessToken = await getAccessToken(key); 只要执行await getAccessToken(key); 云函数voiceCallForOther 就会重新被系统再调用一次,和第一次一样的参数和代码执行。 发现过程:我把 await getAccessToken(key); 注释掉,就没有调用第二次voiceCallForOther 了。 诡异的是 第二次voiceCallForOther 执行的是和第一次一样的代码,所以第二次还是会执行 await getAccessToken(key),为什么第二次执行没有引发第三次 自身触发? 请官方或者大神来帮忙解惑,解决我的问题?头疼。 ----------------------------------------------------------------------------------------- 自己把await getAccessToken(key);注释了, 执行另一个含有request-promise请求的 内部函数 此voiceCallForOther 云函数依然会被执行两次。 大bug:httpapi方式调用有request-promise同步请求的云函数会执行两次 另外:我开始本地调试voiceCallForOther 运行是没有问题的。 只是http api方式调用voiceCallForOther ,会执行两次。voiceCallForOther 含有同步await request-promise请求。 吐槽:httpapi调用对云函数的响应时间只有5s。 我花了2天时间 减少云函数的运行响应时间在5s以内。 接着还有2两天时间,研究调查这个httpapi 调用这个大bug。。。。。。。。。。。。。。 总计4天时间。 强烈要求官方来答一波
2019-07-26