使用带有uname和密码的gremlin-python连接到远程gremlin-server

时间:2019-03-29 19:22:04

标签: gremlin janusgraph

我正在尝试连接到需要使用gremlin_python通过ssl进行uname /密码身份验证的远程gremlin服务器。这是我正在使用的代码的一个片段:

conf = yaml.load(stream, Loader=yaml.SafeLoader)
print(conf) 
g = traversal().withRemote(DriverRemoteConnection(**conf))

该内容的内容为:

{'url': 'wss://my-url.com:port', 'username': 'admin', 'password': '**', 'traversal_source': 'graph_traversal'}

我可以使用如下所示的conf / my.properties文件从gremlin控制台连接到同一台服务器

  hosts: [my-url.com]
  port: port
  username: admin
  password: *
  connectionPool: { enableSsl: true }
  serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}

我从python连接的尝试导致产生E tornado.httpclient.HTTPError: HTTP 502: Bad Gateway。我知道我的连接网址本身是正确的,我可以从gremlin-console进行连接,也可以通过https发送脚本。我一直在尝试查看代码here来找出问题所在。

[编辑:]在更深入地研究之后,我发现您可以使用带有标题中的auth令牌的wss server进行身份验证。我可以直接使用websockets进行测试。打开gremlin_python的DriverRemoteConnection时,可以通过任何方式在标头中传递参数吗?

1 个答案:

答案 0 :(得分:1)

{{ end_point }}{{ username }}{{ password }}替换为您的实际值:

from tornado import httpclient

my_req = httpclient.HTTPRequest('wss://{{ end_point }}:8182/gremlin', headers={"Authorization": "Token AZX ..."})

DriverRemoteConnection(my_req, 'g', username="{{ username }}", password="{{ password }}")