【发布时间】:2020-09-17 10:01:48
【问题描述】:
我们正在尝试使用在 Lambda 和 aws neptune 中运行的 nodejs 在两个顶点之间添加一条边。 我们可以很容易地添加一个顶点,但是当我们尝试添加一条边时,我们的 Lambda 超时。我们的超时设置为 20 秒。
这里是代码。
async function updateDoc (db, dataTmp, now, id, callback, logData, errorData) {
try {
console.log('inside updateDoc function')
console.log(dataTmp)
var user1 = await g.V().hasLabel('user').has('userId', dataTmp.userId).valueMap().unfold().toList()
console.log('user1', user1)
var user2 = await g.V().hasLabel('user').has('userId', dataTmp.trustedUserId).valueMap().unfold().toList()
console.log('user2', user2)
const edgeAdded = await g.V().hasLabel('user').has('userId', dataTmp.userId).as('u').V().hasLabel('user').has('userId', dataTmp.trustedUserId).as('tu').addE('trust').from('u').to('tu').next()
console.log('edgeAdded making asynch', edgeAdded)
// dc.close()
return callback(null)
} catch (error) {
return callback(null)
}
}
这是 lambda 的输出
{8 项 "type":"AddTrustedUser"
"userId":"5ed1cd97ee7ac30008b86a8c"
"trustedUserId":"5ed1cd98ee7ac30008b86a8d"
"dupId":"r54sw17ND"
“时间”:“2020-05-30T03:06:02.632Z”
"initTime":"2020-05-30T03:06:02.632Z"
"lastTime":"2020-05-30T03:06:02.632Z"
"logsGroupName":"AddTrustedUser" }
用户1 [
地图 { 'firstName' => [ 'jaat' ] },
地图 { 'userId' => [ '5ed1cd97ee7ac30008b86a8c' ] }
]
用户2 [
地图 { 'firstName' => [ 'maat' ] },
地图 { 'userId' => [ '5ed1cd98ee7ac30008b86a8d' ] }
]
报告持续时间:20020.15 毫秒计费持续时间:20000 毫秒内存大小:1024 MB 使用的最大内存:103 MB 初始化持续时间:745.55 毫秒 [+20021 毫秒] 3 分钟前 cafbd19c-7b7a-4acb-b3fb-134bb51f054f 任务在 20.02 秒后超时 [+20021ms]
关于我们做错了什么的任何指针。
【问题讨论】:
-
我在查询末尾没有看到
terminal步骤,例如iterate()或toList()也考虑到它是一个异步函数,您是否不想await查询? -
感谢 Kelvin 的快速回复。我们将尝试使用 await 和 next 并在此处更新。感谢您写这本书,它是一个很好的参考。
-
在 addE 查询期间我们仍然看到超时
-
当添加边而不是用
next()结束遍历时,你试过iterate()或toList()吗? -
我没有尝试过 iterate() 或 toList(),但是将 from() 更改为 from_() 解决了这个问题。 tinkerpop.apache.org/docs/current/reference/#from-step 。我在想只有 python 需要 from_,看来 nodejs 也需要它。
标签: node.js aws-lambda gremlin amazon-neptune