我正在尝试连接到需要使用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
时,可以通过任何方式在标头中传递参数吗?
答案 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 }}")