Janne Pänkälä created TINKERPOP-2370:
-----------------------------------------
Summary: Unable to set the server side script timeout in
gremlin-python
Key: TINKERPOP-2370
URL: https://issues.apache.org/jira/browse/TINKERPOP-2370
Project: TinkerPop
Issue Type: Improvement
Components: python
Affects Versions: 3.4.6
Environment: python
Reporter: Janne Pänkälä
Currently one can set timeLimit() to limit how long query will run in the
backend.
This however has limitation that one cannot know if query was completed or not
the server will just stop executing it and return whatever it has found by then.
Server has query timeout and when that triggers one receives
TimeLimitExceededException.
There is a possibility to set the time limit PER query (or per connection?) by
using
evaluationTimeout (or scriptEvaluationTimeout in older version)
It would appear that these are read in the server at the
TraversalOpProcessor.java:166
and they _COULD_ be set in gremlin_python/driver/client.py:119 along with
'gremlin' and 'aliases'
I tried a minor mod
message = request.RequestMessage(
processor='traversal', op='bytecode',
args={'gremlin': message,
'aliases': \{'g': self._traversal_source},
'evaluationTimeout': 1000,
'scriptEvaluationTimeout': 1000,
})
Against AWS Neptune and that seemed to work out properly.
Here it would be easy to read in os.environ.get('ARGS_EVAL_TIMEOUT') but that
would make python library function differently from Java library.
I tried to get it working with some variations of
return g.withStrategies(OptionsStrategy(options=\{"scriptEvaluationTimeout":
300, "evaluationTimeout": 300})).with_("scriptEvaluationTimeout",
300).with_("evaluationTimeout", 300).V().hasLabel('TestLabel').count()
But closer inspection of the client.py implementation woke me to the fact that
there just is no way to provide additional 'args' to the connection for
TraversalOpProsessor to interpret.
I could make a PR for this, but I am not certain as how this implementation
would be preferred to happen.
References.
[https://docs.aws.amazon.com/neptune/latest/userguide/best-practices-gremlin-java-per-query-timeout.html]
[https://github.com/apache/tinkerpop/blob/master/docs/src/reference/gremlin-variants.asciidoc]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)