使用python连接nebula提供flask接口服务报错

报错如下:

Traceback (most recent call last):
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/application_scene/router.py", line 68, in ajcb_router
    % (n, ajbh)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/nebula2/gclient/net/__init__.py", line 74, in execute
    resp = self._connection.execute(self._session_id, stmt)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/nebula2/gclient/net/__init__.py", line 450, in execute
    resp = self._connection.execute(session_id, stmt)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/nebula2/graph/GraphService.py", line 903, in execute
    return self.recv_execute()
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/nebula2/graph/GraphService.py", line 922, in recv_execute
    result.read(self._iprot)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/nebula2/graph/GraphService.py", line 564, in read
    iprot.skip(ftype)
  File "/home/miniconda3/envs/intentsearch/lib/python3.6/site-packages/nebula2/fbthrift/protocol/TProtocol.py", line 221, in skip
    "Unexpected type for skipping {}".format(type)
nebula2.fbthrift.protocol.TProtocol.TProtocolException: Unexpected type for skipping 48

我的代码如下:

if request.method == "POST":
        if not request.form.get("ajbh") or not request.form.get("n"):
            return {"code": "412", "info": "please POST <%s>" % ("address")}
        ajbh = request.form.get("ajbh")
        n = request.form.get("n")
        print("use %s;" % nebula_space)
        test = session.execute("use %s;" % nebula_space)
        if not test.is_succeeded():
            return json.dumps({"code": "419", "info": str(test.error_msg())})
        # GO 1 TO 4 STEPS FROM "7:A330112340000202010251815" OVER * BIDIRECT ;
        print(
            'GO 1 TO %s STEPS FROM "%s" OVER * BIDIRECT  WHERE $$.ajxx.ajbh IS NOT EMPTY;'
            % (n, ajbh)
        )
        data = session.execute(
            'GO 1 TO %s STEPS FROM "%s" OVER * BIDIRECT  WHERE $$.ajxx.ajbh IS NOT EMPTY;'
            % (n, ajbh)
        )
        keys = [
            item for item in data.keys() if re.findall(re.compile(r"AJ\._dst"), item)
        ]
        ajids = [
            value.as_string()
            for item in keys
            for value in data.column_values(item)
            if not value.is_empty()
            and re.findall(re.compile(r"^7:A"), value.as_string())
        ]
        results = moduleForNebula.get_case_sim(ajbh, n, ajids)
        print(results)
        try:
            results = moduleForNebula.get_case_sim(ajbh, n, ajids)
            # conn.close_session()
        except Exception as e:
            return json.dumps({"code": "419", "info": str(e)})
        return json.dumps({"code": "200", "results": results}, ensure_ascii=False)
    else:
        return json.dumps(
            {"code": "405", "info": "please use POST method to finish calculation"}
        )

帖子发错分类了,我改成使用问题了,然后补充下 Nebula、nebula-python、Python 的版本号。建议可以读下论坛使用指南 论坛使用规范 (最后更新于 2021.08.31)

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。