Подключение к удаленному gremlin-серверу с использованием gremlin-python с использованием uname и пароля - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь подключиться к удаленному серверу gremlin, который требует аутентификации uname / password по ssl с использованием gremlin_python. Это фрагмент кода, который я использую:

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

Содержимое conf dict:

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

Я могу подключиться к тому же серверу из консоли gremlin, используя файл conf / my.properties, который выглядит как

  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. Я знаю, что мой URL-адрес соединения правильный, я могу подключиться с консоли gremlin, а также отправлять сценарии через https. Я пытался посмотреть на код здесь , чтобы выяснить, что происходит не так.

[EDIT:] Посмотрев на это немного глубже, я понял, что вы можете аутентифицироваться с помощью wss server с токеном аутентификации в заголовке. Я смог проверить это непосредственно с помощью websockets. Есть ли способ передать параметр в заголовке, когда я открываю DriverRemoteConnection для gremlin_python?

1 Ответ

1 голос
/ 01 апреля 2019

Замените {{ 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 }}")
...