4

I have an api that queries cosmos graph db using gremlin-python. But if calls are not made for a few hours this error pops up

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/tornado/websocket.py", line 1104, in wrapper
    await fut
tornado.iostream.StreamClosedError: Stream is closed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/app/disc_api.py", line 20, in visu
    r=final()
  File "/app/dis_parse.py", line 58, in final
    par.add('nodes',parser_node())
  File "/app/dis_parse.py", line 18, in parser_node
    n=node()
  File "/app/cosmo.py", line 16, in node
    for result in callback.result():
  File "/usr/local/lib/python3.6/concurrent/futures/_base.py", line 432, in result
    return self.__get_result()
  File "/usr/local/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.6/site-packages/gremlin_python/driver/connection.py", line 63, in cb
    f.result()
  File "/usr/local/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/local/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/site-packages/gremlin_python/driver/protocol.py", line 66, in write
    self._transport.write(message)
  File "/usr/local/lib/python3.6/site-packages/gremlin_python/driver/tornado/transport.py", line 37, in write
    lambda: self._ws.write_message(message, binary=True))
  File "/usr/local/lib/python3.6/site-packages/tornado/ioloop.py", line 532, in run_sync
    return future_cell[0].result()
  File "/usr/local/lib/python3.6/site-packages/tornado/websocket.py", line 1106, in wrapper
    raise WebSocketClosedError()
tornado.websocket.WebSocketClosedError

my api looks like this

app = Flask(__name__)

CORS(app)

@app.route('/visu', methods=['GET'])
def visu():
    r=final()
    return r

the final() function is a parser which calls these functions

from gremlin_python.driver import client, serializer
import sys
import traceback
import json, ast
client = client.Client('wss://database.gremlin.cosmos.azure.com:443/', 'g',
                           username="/dbs/graphdb/colls/graph_name",
                           password="password"
                           )


def node():
    query='g.V()'
    callback=client.submitAsync(query)
    for result in callback.result():
        a=ast.literal_eval(json.dumps(result))
        return a

def edges():
    query='g.V().outE()'
    callback=client.submitAsync(query)
    for result in callback.result():
        #print (json.dumps(result))
        r=ast.literal_eval(json.dumps(result))

        return r

def count(name):
    query='g.V().has("name",'+'"'+name+'").count()'
    callback=client.submitAsync(query)

    for result in callback.result():
        resu=result
        return resu

I don't know what's causing this error and what should i change in my code in order to solve it. This is the first time i am using gremlin...is there something that i am missing because i didn't find anything in the docs related to this.

0 Answers0