tornado - tornado.iostream.StreamClosedError:流已关闭 gremlin-python
问题描述
我有一个使用 gremlin-python 查询 cosmos graph db 的 api。但是如果几个小时没有打电话,就会弹出这个错误
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
我的 api 看起来像这样
app = Flask(__name__)
CORS(app)
@app.route('/visu', methods=['GET'])
def visu():
r=final()
return r
final() 函数是一个解析器,它调用这些函数
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
我不知道是什么导致了这个错误,我应该在我的代码中改变什么来解决它。这是我第一次使用 gremlin ......有什么我遗漏的东西,因为我在文档中没有找到与此相关的任何内容。
解决方案
推荐阅读
- android - 通过活动传递数据
- c - “else”如何在 C 中的“1 line if”中工作?
- python-3.x - Tensorflow-Probability 中具有 DenseVariational 层的简单线性回归模型返回:TypeError: 'NoneType' object is not callable
- javascript - 在 Vue js 中未触发创建
- javascript - 从外部 json 数据创建 3D 谷歌图表到 html 文件
- php - 尝试使用 php 进行 curl 发布请求
- excel - C# 中的 RTD 客户端
- javascript - 嵌套过滤器
- neo4j - 所有节点都与同一节点有关系的搜索路径
- html - 在 Shiny 中使用 HTML 将 Tooltip 添加到 tabPanel