上传文件超过重试限制

您所在的位置:网站首页 腾讯文档超过最大1500列限制 上传文件超过重试限制

上传文件超过重试限制

2024-07-16 00:42| 来源: 网络整理| 查看: 265

上下文:我正在编写使用NodeJSv10.15.3从SFTP服务器下载文件并通过writeStream将其上传到GCS的代码。

由于我正在使用的SFTP库中存在错误,stream.pipe (即来自该库生成的读数据流的管道)实际上在节点10中被破坏,因此,我尝试通过以下代码上传该文件(其中stream是读数据流,并且省略了不必要的信息):

代码语言:javascript复制let acl = fileMode; if (fileMode === 'public') { // options for acl are publicRead and private // need to add the Read if public acl += 'Read'; } var options = { predefinedAcl: acl, destination: destPath, metadata: { contentType: contentType, cacheControl: 'no-cache' } }; // Add in a check here for if the bucket exists let file = new File(bucket, destPath); let writeStream = file.createWriteStream(options); writeStream.on('finish', () => { file.getMetadata() .then((metadata) => { console.log('metadata', metadata); return resolve(metadata); }) .catch(error => { console.error('Error getting file metadata', error); return reject(error); }); }); stream.on('end', () => { try { writeStream.end(); } catch (err) { console.error('Error closing writeStream', err); return reject(err); } }); writeStream.on('error', error => { console.error('Error in writeStream', error); return reject(error); }); stream.on('error', error => { console.error('Error in stream', error); return reject(error); }); let data = stream.read(); while (data) { writeStream.write(data); data = stream.read(); }

当我使用while (data)方法从我们的SFTP服务器流式传输到文件系统上的本地文件时,这是正常工作的。但是,当我尝试运行此代码以上载到我们的GCS文件时,我得到以下错误:

代码语言:javascript复制MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added. Use emitter.setMaxListeners() to increase limit Error in writeStream Error: Retry limit exceeded // stacktrace omitted Error Uploading to GCS from a stream: Retry limit exceeded Error: Retry limit exceeded

看起来我一定是做错了什么,但我不知道为什么这不是一个有效的方法,我也不确定我是不是错过了流的一些细微之处(我坦率地承认,这对我来说几乎是一个黑盒)或GCS的问题。

编辑:好的,这实际上看起来与SFTP问题完全无关。我尝试过使用推荐的方法从本地文件系统上传文件,但我看到了同样的错误。我尝试的更“精简”的代码是:

代码语言:javascript复制// Add in a check here for if the bucket exists let file = new File(bucket, destPath); fs.createReadStream('sample_file.csv') .pipe(file.createWriteStream(options)) .on('error', function(err) { console.error('err', err); return reject(err); }) .on('finish', function() { console.log('resolving'); return resolve({gcsUrl: url}); });


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3