gremlin - AWS Neptune:查询超时值
问题描述
我运行了一个长查询(可能是两分钟长),代码因超时错误而崩溃。
我不使用 Gremlin-Server,我直接从我的 Python 代码连接到 Neptune 端点。
对于 NEO4J,我更改了scriptEvaluationTimeout
位于https://github.com/apache/tinkerpop/blob/master/gremlin-server/conf/gremlin-server-neo4j.yaml的位置。
我应该如何更改 Neptune 的类似内容(当我不使用 Gremlin 服务器时)
Traceback (most recent call last):
File "test.py", line 18, in <module>
print(execute_query(query))
File "/home/ec2-user/app/ecodrone/ecodrone/base_gremlin.py", line 56, in execute_query
results = future_results.result()
File "/usr/lib64/python3.7/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib64/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/local/lib/python3.7/site-packages/gremlin_python/driver/resultset.py", line 81, in cb
f.result()
File "/usr/lib64/python3.7/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib64/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib64/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.7/site-packages/gremlin_python/driver/connection.py", line 77, in _receive
self._protocol.data_received(data, self._results)
File "/usr/local/lib/python3.7/site-packages/gremlin_python/driver/protocol.py", line 98, in data_received
"{0}: {1}".format(status_code, message["status"]["message"]))
gremlin_python.driver.protocol.GremlinServerError: 598: {"requestId":"2b5511fe-4930-4d84-b685-dc3c9943d991","code":"TimeLimitExceeededException","detailedMessage":"A timeout occurred within the script during evaluation of [RequestMessage{, requestId=2b5511fe-4930-4d84-b685-dc3c9943d991, op='eval', processor='', args={gremlin=g.withSack(0).V().hasLabel(\"People\").as(\"from\",\"to\").\n repeat(both().as(\"to\").dedup(\"from\",\"to\").\n sack(sum).by(constant(1))).\n emit(hasLabel(\"Process\")).\n sack().dedup().fold().\n project(\"min\", \"max\").\n by(choose(count(local).is(0), constant(0), min(local))).\n by(choose(count(local).is(0), constant(0), max(local))), aliases={g=g}}}] - consider increasing the timeout"}
解决方案
海王星文档描述了一个neptune_query_timeout
- 我认为这会帮助你:
https://docs.aws.amazon.com/neptune/latest/userguide/parameters.html
推荐阅读
- ruby - 在不同的班级中使用一个班级(基本的oop理解)?
- bash - bash 中的正则表达式在 Bash 中使用运算符'=~' 的条件构造中不起作用
- http - 使用 Python 查找最终重定向的 url
- javascript - 行选择在使用 JS 的 Django 中不起作用
- jquery - 在一个项目中使用带有 jquery_ujs 的 rails-ujs?
- constraint-programming - 为什么这个两行更改会破坏这个 minizinc set-cover 程序?
- kubernetes - Minio 数据不会通过重新启动保留
- python - 为 PCA 生成加载矩阵时如何将 pandas 数据框列设置为索引
- excel - 从另一个工作簿复制/覆盖工作表
- python - 如何解决 Python 中的 KeyError?