提问参考模版:
- nebula 版本:3.4.0
- 部署方式: 单机
- 安装方式:Docker
- 是否上生产环境: N
- 问题的具体描述
我使用FastAPI作为gateway,使用nebula-python 连接数据库,一开始部署测试都没有问题,之后过了一天再使用时抛出TTransportException: TSocket read 0 bytes。服务并未重启过会后又能正常提供服务,请问下这个该如何处理,是不是因为连接有timeout的问题,如何能否一直保持连接?
以下是报错信息:
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/gclient/net/Connection.py", line 140, in execute_parameter
resp = self._connection.executeWithParameter(session_id, stmt, params)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/graph/GraphService.py", line 1652, in executeWithParameter
return self.recv_executeWithParameter()
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/graph/GraphService.py", line 1665, in recv_executeWithParameter
(fname, mtype, rseqid) = self._iprot.readMessageBegin()
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/fbthrift/protocol/TBinaryProtocol.py", line 137, in readMessageBegin
sz = self.readI32()
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/fbthrift/protocol/TBinaryProtocol.py", line 216, in readI32
buff = self.trans.readAll(4)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/fbthrift/transport/TTransport.py", line 72, in readAll
chunk = self.read(need)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/fbthrift/transport/TTransport.py", line 183, in read
self.__rbuf = StringIO(self.__trans.read(max(sz, self.__rbuf_size)))
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/fbthrift/transport/TSocket.py", line 307, in read
raise TTransportException(type=TTransportException.END_OF_FILE,
nebula3.fbthrift.transport.TTransport.TTransportException: TSocket read 0 bytes
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 419, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
return await self.app(scope, receive, send)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/fastapi/applications.py", line 271, in __call__
await super().__call__(scope, receive, send)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/applications.py", line 118, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
raise exc
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
raise exc
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
raise e
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/routing.py", line 706, in __call__
await route.handle(scope, receive, send)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
await self.app(scope, receive, send)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
response = await func(request)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/fastapi/routing.py", line 237, in app
raw_response = await run_endpoint_function(
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/fastapi/routing.py", line 163, in run_endpoint_function
return await dependant.call(**values)
File "/home/yuanmou/projects/kg-gateway/./app/api/routes/graph.py", line 40, in get_onestep_subgraph
vid = get_vertex_id(sess_pool, entity_type.value, entity_name)
File "/home/yuanmou/projects/kg-gateway/./app/db/nebula/crud/vertex.py", line 13, in get_vertex_id
result_set = client.execute('''
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/gclient/net/SessionPool.py", line 148, in execute
return self.execute_parameter(stmt, None)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/gclient/net/SessionPool.py", line 177, in execute_parameter
raise e
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/gclient/net/SessionPool.py", line 163, in execute_parameter
resp = session.execute_parameter(stmt, params)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/gclient/net/Session.py", line 42, in execute_parameter
resp = self._connection.execute_parameter(self._session_id, stmt, params)
File "/home/yuanmou/miniconda3/envs/kg-gateway/lib/python3.10/site-packages/nebula3/gclient/net/Connection.py", line 148, in execute_parameter
raise IOErrorException(
nebula3.Exception.IOErrorException: TSocket read 0 bytes