【发布时间】:2019-02-07 00:06:47
【问题描述】:
我将 gremlin@3.3.5 用于带有 AWS Lambda 的 Node.js 8.10 应用程序。对于单次调用,该过程一切正常。这是我的示例代码。
const gremlin = require('gremlin');
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
const Graph = gremlin.structure.Graph;
exports.handler = (event, context, callback) => {
dc = new DriverRemoteConnection('wss://your-neptune-endpoint:8182/gremlin');
const graph = new Graph();
const g = graph.traversal().withRemote(dc);
try {
const result = await g.V().limit(1).count().next();
dc.close();
callback(null, { result: result });
} catch (exception) {
callback('Error');
throw error;
}
}
当我为单次调用运行此进程时,它似乎一切正常,但是当我尝试运行批处理操作(例如 100,000 个请求/小时)时,我在 CloudWatch 日志指标中遇到了我的连接没有成功关闭。我已经尝试了一些这样的实现,比如 callbackWaitForEventLoopEmpty,但它抓住了 lambda。当我删除回调(或类似地返回)时,这个过程也适用于批处理操作。但我确实想从这个 lambda 返回数据,其中包含传递给我的 step 函数的信息,以根据该信息触发另一个 lambda。
【问题讨论】:
-
return result有效,callback(null, result)无效? -
不,两者都没有。我相信他们会做同样的事情。
-
但是当我既不返回也不做回调时,连接就会关闭。
标签: node.js amazon-web-services gremlin aws-step-functions amazon-neptune