运行 AWS Neptune 查询时出现 TimeoutError 和 TimeLimitExceededException

问题描述 投票:0回答:2

我有一个包含大约 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 ","requestId":"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 秒后超时

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

amazon-web-services amazon-neptune
2个回答
2
投票

这是 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)

0
投票

快速更新补充说,TinkerPop 3.4.10 现已发布,该版本中的问题已得到解决。 – 凯文·劳伦斯 2021 年 2 月 28 日 16:14

我在 3.7.1 上并得到: ,"code":"TimeLimitExceededException","message":"脚本内发生超时 [

© www.soinside.com 2019 - 2024. All rights reserved.