微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运行 AWS Neptune 查询时的 TimeoutError 和 TimeLimitExceededException

如何解决运行 AWS Neptune 查询时的 TimeoutError 和 TimeLimitExceededException

我有一个包含大约 200 万个节点和事务连接的数据库,存储在 Neptune 数据库中。

我正在尝试两个具有类似问题的不同查询,但我不知道如何解决其中任何一个

一个查询试图从一个用户开始生成一个 2 跳图。查询g.V(source).outE('friend').otherV().outE('friend').toList()。对于 1 跳图,查询工作正常,但对于 2 跳或更多我有以下错误

gremlin_python.driver.protocol.GremlinServerError: 598: {"detailedMessage":"脚本中发生超时或在评估 [1e582e78-bab5-462c-9f24-5597d53ef02f]","code": "TimeLimitExceededException","re​​questId":"1e582e78-bab5-462c-9f24-5597d53ef02f"}

我进行的第二个查询是查找从源节点到目标节点的路径(不需要是最短的,而只是一条路径)。执行此操作的查询如下:g.V().hasId(str(source)).repeat(__.out().simplePath()).until(__.hasId(str(target))).path().limit(1).toList()

查询适用于相对较近的节点对(最多 4 跳距离),但对于更远的节点对,我收到以下错误

*** tornado.ioloop.TimeoutError: 操作在 30 秒后超时

我想知道是否有人对如何解决这些时间限制错误有任何建议。我真的很感激这方面的任何帮助,谢谢!

解决方法

这是 TinkerPop Python 3.4.9 客户端中的一个已知错误。有关问题和解决方法的详细信息,请参阅 Gremlin 邮件列表上的线程:

https://groups.google.com/g/gremlin-users/c/K0EVG3T-UrM

您可以使用以下代码片段更改 30 秒超时。

from gremlin_python.driver.tornado.transport import TornadoTransport

graph=Graph()

connection = DriverRemoteConnection(endpoint,'g',transport_factory=lambda: TornadoTransport(read_timeout=None,write_timeout=None))

g = graph.traversal().withRemote(connection)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。