【问题标题】:Using npm module (ogr2ogr) in lambda function returns no results在 lambda 函数中使用 npm 模块 (ogr2ogr) 不会返回任何结果
【发布时间】:2021-05-31 07:01:14
【问题描述】:

我正在尝试在 lambda 函数中使用 ogr2gr module,但我遇到了一些问题,所以我想看看是否有人尝试在 lambda 函数中使用该模块?我使用 ogr2ogr 模块的方式是使用.promise()。但是,当我尝试运行我的 lambda 函数时,我在日志中看不到任何内容。似乎它永远不会兑现承诺?这是我的代码在 promise 下的样子:

let data = await ogr2ogr(path)
            .destination(database)
            .options(['-f "PostgreSQL"', '-nlt PROMOTE_TO_MULTI', 'nln <schemaName>."' + tableName + '"', '-overwrite']).promise();
console.log(data);

我完全按照文档所说的方式进行操作,但仍然无法正常工作。我应该指出的是我试图做的事情

let ogr = ogr2ogr(path)
            .destination(database)
            .options(['-f "PostgreSQL"', '-nlt PROMOTE_TO_MULTI', 'nln <schemaName>."' + tableName + '"', '-overwrite']);
console.log(ogr);

我实际上在日志中看到了 EventEmitter:

EventEmitter {
  _inPath: '<path_of_file>',
  _onStderr: [Function (anonymous)],
  _driver: {},
  _args: [],
  _timeout: 15000,
  _format: 'GeoJSON',
  _skipfailures: false,
  _testClean: [Function (anonymous)],
  _destination: <database information>,
  _options: [
    '-f "PostgreSQL"',
    '-nlt PROMOTE_TO_MULTI',
    'nln useradministration.tableName',
    '-overwrite'
  ]
}

但是,如果我尝试像文档中所说的那样使用.exec() 函数进行回调,我看不到任何输出:

        let ogr = ogr2ogr(path)
            .destination(database)
            .options(['-f "PostgreSQL"', '-nlt PROMOTE_TO_MULTI', 'nln <schemaName>."' + tableName + '"', '-overwrite']);
        console.log(ogr);
        
        ogr.exec(function (er, data) {
          if (er) {
            console.error(er);
          }
          console.log(data);
        });

老实说,在这一点上我很困惑,不知道该怎么办。非常感谢任何帮助,例如是否有人遇到类似问题,或者解释为什么承诺或回调在 lambda 函数中起作用。

【问题讨论】:

    标签: aws-lambda promise ogr ogr2ogr


    【解决方案1】:

    事实证明,我的 lambda 超时时间为 3 秒,而 promise 花费的时间超过 3 秒,导致 lambda 超时,而我在日志中看不到任何结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2020-01-10
      相关资源
      最近更新 更多