Торнадо выбрасывает поток закрытой ошибки в чаше python - PullRequest
0 голосов
/ 03 марта 2020

Я пробую AWS Нептун в первый раз, используя Чашу.

Это вся ошибка

Traceback (most recent call last):
  File "/var/task/chalice/app.py", line 1104, in _get_view_function_response
    response = view_function(**function_args)
  File "/var/task/app.py", line 44, in getPosts
    raise e
  File "/var/task/app.py", line 37, in getPosts
    result = g.V().has('name', 'test1').toList()
  File "/var/task/gremlin_python/process/traversal.py", line 58, in toList
    return list(iter(self))
  File "/var/task/gremlin_python/process/traversal.py", line 48, in __next__
    self.traversal_strategies.apply_strategies(self)
  File "/var/task/gremlin_python/process/traversal.py", line 573, in apply_strategies
    traversal_strategy.apply(traversal)
  File "/var/task/gremlin_python/driver/remote_connection.py", line 149, in apply
    remote_traversal = self.remote_connection.submit(traversal.bytecode)
  File "/var/task/gremlin_python/driver/driver_remote_connection.py", line 55, in submit
    result_set = self._client.submit(bytecode)
  File "/var/task/gremlin_python/driver/client.py", line 111, in submit
    return self.submitAsync(message, bindings=bindings).result()
  File "/var/task/gremlin_python/driver/client.py", line 127, in submitAsync
    return conn.write(message)
  File "/var/task/gremlin_python/driver/connection.py", line 55, in write
    self.connect()
  File "/var/task/gremlin_python/driver/connection.py", line 45, in connect
    self._transport.connect(self._url, self._headers)
  File "/var/task/gremlin_python/driver/tornado/transport.py", line 36, in connect
    lambda: websocket.websocket_connect(url))
  File "/var/task/tornado/ioloop.py", line 576, in run_sync
    return future_cell[0].result()
tornado.simple_httpclient.HTTPStreamClosedError: Stream closed

и вот мой код

import logging

from chalice import Chalice, BadRequestError, NotFoundError
from gremlin_python import statics
from gremlin_python.structure.graph import Graph
from gremlin_python.process.graph_traversal import __
from gremlin_python.process.strategies import *
from gremlin_python.process.traversal import T, P, Operator
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
from datetime import datetime

app = Chalice(app_name='chalice-neptune')
app.debug = True

logging.basicConfig()
logging.getLogger().setLevel(logging.INFO)

def setup_graph():
    try:
        graph = Graph()
        connstring = 'ws://NEPTUNE-ENDPOINT-HERE:8182/gremlin'
        g = graph.traversal().withRemote(DriverRemoteConnection(connstring, 'g'))
        logging.info('Connected to Neptune')
    except Exception as e:
        logging.error(e, exc_info = True)
        raise BadRequestError("Could not connect to Neptune")
    return g

@app.route('/getPosts')
def getPosts():
    g = setup_graph()
    try:
        result = g.V().has('name', 'test1').toList()

        response = {
            'status_code': 200,
            'data': result
        }
    except Exception as e:
        raise e
    return response

Кто-нибудь, кто пробовал это?

Я следовал примеру, найденному в этом ведре gremlin- ​​python -пример

Я знаю, что ничего не пропустил из примера, но он все еще выбрасывает сообщение об ошибке закрытия потока.

1 Ответ

4 голосов
/ 04 марта 2020

Очевидно, что я изменил только строку подключения, и теперь она работает нормально.

connstring = 'wss://NEPTUNE-ENDPOINT-HERE:8182/gremlin'

Я изменил ее с ws на wss.

Что касается различия между этими двумя Вы можете обратиться к этому ответу

Разница между ws и wss?

...