【问题标题】:Google Cloud Storage NodeJS getFilesStream Async谷歌云存储 NodeJS getFilesStream 异步
【发布时间】:2020-04-24 15:54:22
【问题描述】:

我有一个永远不会返回的 Google 函数;它只是达到了作为谷歌函数的超时限制。它可以在 60 秒内在本地正常工作。不确定问题可能是什么。代码如下:

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */
const {Storage} = require('@google-cloud/storage');
exports.main = async (req, res) => {
  const storage = new Storage({projectId: 'our-project'});
  const store = storage.bucket('our-bucket');
    const incomplete = {
    LT04: [],
    LT05: [],
    LE07: [],
    LC08: []
  };

  store.getFilesStream({prefix : 'prefixToMatch', autoPaginate : true })
    .on('error', (err) => {
      return console.error(err.toString())
    })
    .on('data', (file) => {
      // Find small/bad files
      if (file.metadata.size === 162) {
        const split = file.name.split('/');
        const prefix = split[2].substr(0, 4);
        incomplete[prefix].push(file.name);
      }
    })
    .on('end', () => {
      return JSON.stringify(incomplete, false, '  ');
    });
};

【问题讨论】:

    标签: node.js google-cloud-storage


    【解决方案1】:

    您的代码似乎没问题。但是您需要考虑一些关于此的额外细节。

    您的 Cloud 函数的内存是否足够?我认为你可以增加你的CF的memory allocated

    您确定这是由于超时问题造成的吗?如果你还没有看到日志,你可以去Error reporting section.

    如果您已经确认,另一种选择可能是更改timeout duration.

    【讨论】:

      【解决方案2】:

      我认为问题在于我需要发送“res.send”而不是 Promise.resolve。同样,我需要在函数之前删除异步。

      感谢您对指南的快速响应,显然错误比这更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        • 2016-10-12
        • 1970-01-01
        • 2019-06-03
        • 1970-01-01
        • 2012-08-19
        相关资源
        最近更新 更多