gremlin python添加顶点KeyError

时间:2019-05-01 17:37:29

标签: gremlin

我正在使用gremlinpython。插入属性值大于32位的顶点会导致KeyError。

g.addV('test').property('size', 2147483648).iterate()
File "/home/ec2-user/src/common/test.py", line 74, in insert_vertices
    self.g.addV('test').property('size', 2147483648).iterate()
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/process/traversal.py", line 65, in iterate
    try: self.nextTraverser()
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/process/traversal.py", line 70, in nextTraverser
    self.traversal_strategies.apply_strategies(self)  
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/process/traversal.py", line 506, in apply_strategies
    traversal_strategy.apply(traversal)
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/driver/remote_connection.py", line 148, in apply
    remote_traversal = self.remote_connection.submit(traversal.bytecode)
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/driver/driver_remote_connection.py", line 54, in submit
    results = result_set.all().result()
  File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 432, in result
    return self.__get_result()
  File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/driver/resultset.py", line 90, in cb
    f.result()
  File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/driver/connection.py", line 80, in _receive
    status_code = self._protocol.data_received(data, self._results)
  File "/home/ec2-user/venv/lib64/python3.6/dist-packages/gremlin_python/driver/protocol.py", line 83, in data_received
    result_set = results_dict[request_id]
KeyError: None

小于32位的值可以正常工作

g.addV('test').property('size', 2147483647).iterate()

将其投射到浮动效果也很好

g.addV('test').property('size', float(2147483648)).iterate()

与本地运行的gremlin服务器和远程Neptune DB的行为相同。从gremlin控制台运行正常。因此,我认为这不是服务器问题。

Python版本-3.6和3.7

gremlinpython版本-3.4.1

1 个答案:

答案 0 :(得分:1)

您明确需要将该数字定义为long(),例如:

from gremlin_python.statics import *

g.addV('test').property('size', long(2147483648)).iterate()