6

我是新手,正在尝试让 Titan 使用 Python。我已经为此苦苦挣扎了一天半,却无处可去。我尝试过灯泡和 rexpro-python,但似乎没有任何效果。

rexpro-python中,以下代码:

from rexpro import RexProConnection
conn = RexProConnection('localhost', 8184, 'graph')

将挂起并且服务器产生以下消息(对于 Titan 版本 0.3.2、0.3.1 和 0.2.1)

13/09/18 16:59:27 WARN filter.RexProMessageFilter: unsupported rexpro version: 1

灯泡中:

from bulbs.config import Config, DEBUG
from bulbs.rexster import Graph

config = Config('http://localhost:8182/graphs/graph')
g = Graph(config)

产生以下错误:

SystemError: ({'status': '500', 'transfer-encoding': 'chunked', 'server': 'grizzly/2.2.16', 'connection': 'close', 'date': 'Wed, 18 Sep 2013 21:06:27 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json'}, '{"message":"","error":"javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.idx() is applicable for argument types: () values: []\\nPossible solutions: is(java.lang.Object), any(), find(), any(groovy.lang.Closure), with(groovy.lang.Closure), _(groovy.lang.Closure)","api":{"description":"evaluate an ad-hoc Gremlin script for a graph.","parameters":{"rexster.returnKeys":"an array of element property keys to return (default is to return all element properties)","rexster.showTypes":"displays the properties of the elements with their native data type (default is false)","load":"a list of \'stored procedures\' to execute prior to the \'script\' (if \'script\' is not specified then the last script in this argument will return the values","rexster.offset.end":"end index for a paged set of data to be returned","rexster.offset.start":"start index for a paged set of data to be returned","params":"a map of parameters to bind to the script engine","language":"the gremlin language flavor to use (default to groovy)","script":"the Gremlin script to be evaluated"}},"success":false}')

在 Titan 服务器上也有类似的例外。有没有人让这个工作?

4

2 回答 2

1

在 rexpro-python 的情况下,您有一个版本问题。最新版本的 RexPro Python 将连接到 TinkerPop/Rexster 2.4.0。Titan 尚不支持该版本。从 Titan 0.3.2 开始,它支持 TinkerPop 2.3.x。看起来这是 rexpro-python 升级到 2.4.0 兼容性之前的最后一次提交:

https://github.com/bdeggleston/rexpro-python/commit/3597f4ce5a4da69ec64f174aa1a064abf7524693

但是您可能需要稍微查看一下提交历史,以确保您得到正确的。

Bulbs 看起来像是在调用手动索引,这是 Titan 不支持的。在gremlin-users和/或areuliusgraphs邮件列表中有许多关于此的帖子。查看这篇文章并参考您的确切问题:

https://groups.google.com/forum/#!msg/gremlin-users/s7Ag1tjbxLs/nC5WjtHh6woJ

简短的回答看起来灯泡已更新以支持泰坦。也许,您仍然在某个地方存在一些版本不兼容问题。

于 2013-09-19T11:11:39.770 回答
1

使用 Titan 1.0.0 或更高版本,我们有更好的方式从 python 连接。

现在 Titan 自带 Gremlin 服务器。Gremlin 服务器为非 JVM 语言(例如 Python、Javascript 等)提供与 TinkerPop 堆栈通信的能力。

Gremlin Server 是Rexster的替代品。

启动 gremlin 服务器(此脚本与 titan 一起打包):

sh gremlin-server.sh 

类似的批处理脚本可用于同一目录中的窗口。

启动后,以下 python 驱动程序应有助于连接 Gremlin 服务器:

  • aiogremlin - 基于 asyncio 和 aiohttp 的 Python 3 库,它使用 websocket 与 Gremlin 服务器通信。
  • gremlinclient - Gremlin 服务器的异步 Python 2/3 客户端,允许灵活的协程语法 - Trollius、Tornado、Asyncio. 这与 aiogremlin 出自同一作者。我相信,aiogremlin 不再受支持,这是他从事的最新项目。
  • gremlinrestclient - Python 2/3 库,使用 HTTP 通过 REST 与 Gremlin 服务器通信。

基于 Python 的查询语言库,可以在开发过程中提供帮助:

  • gremlin-py - 编写可以发送到 Gremlin 服务器的纯 Python Gremlin。
  • gremlin-python - 遍历属性图时允许使用 Python 语法。
于 2016-05-09T11:37:02.747 回答