0

我正在尝试一个 Python 应用程序来连接到 Janusgraph 0.2.0。我遵循了所有设置说明,并且能够在图中创建元素并成功遍历它们。

import asyncio

from goblin import Goblin
from quart import jsonify, Quart, serving
from app.models import Person, Knows

loop = asyncio.get_event_loop()
goblin_app = loop.run_until_complete(Goblin.open(loop,
hosts = ['localhost'],
port = '8182',
scheme = 'ws'))
goblin_app.register(Person, Knows)
print("Initialized all the goblin stuff")
quart_app = Quart(name)

async def create(app, data):
session = await app.session()
session.add(data)
await session.flush()
return data

leif = Person()
leif.name = 'Leif'
leif.age = 28
leif = loop.run_until_complete(create(goblin_app, leif))

jon = Person()
jon.name = 'Jon'
jon.age = 32
jon = loop.run_until_complete(create(goblin_app, jon))

works_with = Knows(leif, jon)
works_with = loop.run_until_complete(goblin_app, works_with)

但是,当我尝试从我的应用程序连接并发送 session.flush() 来创建一个元素时,应用程序会冻结并且没有其他任何事情发生。在 gremlin-server.log 我看到以下错误:

1109015 [gremlin-server-worker-1] WARN org.apache.tinkerpop.gremlin.server.handler.WsGremlinBinaryRequestDecoder - Gremlin 服务器没有为请求的 mime 类型 [application/vnd.gremlin-v3.0+json 配置序列化程序] - 默认使用 org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0 1109035 [gremlin-server-worker-1] WARN org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV1d0 - 请求 [PooledUnsafeDirectByteBuf(ridx: 558 , widx: 558, cap: 592)] 无法被 org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV1d0 反序列化。1109039 [gremlin-server-worker-1] 警告 org.apache.tinkerpop.gremlin.server.handler.OpSelectorHandler - 请求的 OpProcessor 无效 [null] org.apache.tinkerpop.gremlin.server.op.OpProcessorException:

我在 gremlin-server.yaml 文件中找到了一些关于替换 GraphSON 版本以添加 gremlin-v3.0+json 缺少的序列化程序的信息,我这样做了,但是当我添加时,我收到一个关于不存在的错误能够找到配置的序列化程序类:10348 [main] WARN org.apache.tinkerpop.gremlin.server.AbstractChannelizer - 找不到配置的序列化程序类 - org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0 - 它不会可用 1

所以我的问题是:

  1. 有没有一种方法可以将我的应用程序发送到 Gremlin 服务器的序列化程序的版本更改为兼容版本之一
  2. 如果我下载 GraphSON 3.0 版并将其放在服务器中,它会工作吗?这意味着我将不得不升级与 Janusgraph 一起打包的 Gremlin Server 的版本,这似乎太多了......

有没有人遇到过类似的问题并有什么建议?

4

1 回答 1

0

检查并确保gremlinpython版本与 JanusGraph 0.2.0 使用的 Apache TinkerPop 版本 3.2.6 一致。

于 2018-03-12T13:52:47.473 回答