我正在使用Google Cloud Functions:
答案 0 :(得分:4)
根据this thread,google cloud nodejs API开发人员对初始化时使用的默认值进行了一些更改,以解决这些ECONNRESET套接字问题。
来自@ stephen ++ on github GoogleCloudPlatform / google-cloud-node issue 2254:
默认情况下,我们已在Cloud Function中禁用了forever代理 环境。如果你取消并重新安装@ google-cloud / storage,你就可以了 将自动获取新行为。谢谢你的所有 大家帮忙调试!
在云功能平台上使用存储的类似ECONNRESET
问题的解决方案是使用npm:promise-retry
,但是设置自己的重试策略,因为默认的10次重试太多了。
我报告了一个ECONNRESET issue with cloud functions to Google Support(如果您在此上下文中也获得了ECONNRESET但在其他上下文中没有获得ECONNRESET,则可能会出现问题)并且他们回答“无法修复”该行为是预期的。谷歌支持说,API客户端库使用的套接字在几分钟后连接超时,然后当你的云功能再次尝试使用它时,你会得到ECONNRESET。他们建议在初始化存储API时添加autoRetry:true
,但这没有帮助。
ECONNRESET也在读取方面发生。在读取和写入情况下promise-retry
都有帮助,并且大多数情况下只需要1次重试就可以重置坏套接字。
所以我写了npm:pipe-to-storage
来返回重试的承诺,检查md5等,但是我没有用二进制数据测试它,只有文本,所以我不知道你是否可以使用它与图像文件。这些电话看起来像这样:
const fs = require('fs');
const storage = require('@google-cloud/storage')();
const pipeToStorage = require('pipe-to-storage')(storage);
const source = ()=>(fs.createReadStream("/path/to/your/file/to/upload"));
pipeToStorage(source, bucketName, fileNameInBucket).then(//do next step);
另见How do I read the contents of a new cloud storage file of type .json from within a cloud function?
答案 1 :(得分:0)
您可以直接向Firebase Support team报告错误,或者使用Firebase打开support ticket以解决特定问题。
您还可以在Google Issue Tracker中报告特定于云计算功能的问题,该问题类似于Stack Overflow,因为它可以被公众访问(但专门用于提交问题报告)。