首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用py2neo的GrapheneDB密码事务

使用py2neo的GrapheneDB密码事务
EN

Stack Overflow用户
提问于 2014-10-07 04:41:33
回答 1查看 572关注 0票数 2

我在Heroku上用GrapheneDB,Tornado,py2neo运行了一个应用程序。

我正在尝试使用py2neo的Cypher事务。

我可以在本地运行以下代码:

代码语言:javascript
复制
graphenedb_url = os.environ.get("GRAPHENEDB_URL", "http://localhost:7474/")
service_root = neo4j.ServiceRoot(URI(graphenedb_url).resolve("/"))
graph_db = service_root.graph_db
session = cypher.Session()

但是当我部署到Heroku时,我得到:

代码语言:javascript
复制
2014-10-06T20:33:34.626356+00:00 app[web.1]:   File "main.py", line 33, in <module>
2014-10-06T20:33:34.626364+00:00 app[web.1]:     session = cypher.Session()
2014-10-06T20:33:34.626367+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/cypher.py", line 127, in __init__
2014-10-06T20:33:34.626435+00:00 app[web.1]:     self._graph_db = self._service_root.graph_db
2014-10-06T20:33:34.626456+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/neo4j.py", line 462, in graph_db
2014-10-06T20:33:34.626550+00:00 app[web.1]:     return GraphDatabaseService.get_instance(self.__metadata__["data"])
2014-10-06T20:33:34.626571+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/neo4j.py", line 338, in __metadata__
2014-10-06T20:33:34.626641+00:00 app[web.1]:     self.refresh()
2014-10-06T20:33:34.626662+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/neo4j.py", line 360, in refresh
2014-10-06T20:33:34.626732+00:00 app[web.1]:     self._metadata = ResourceMetadata(self._get().content)
2014-10-06T20:33:34.626756+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/neo4j.py", line 365, in _get
2014-10-06T20:33:34.626838+00:00 app[web.1]:     product=self._product)
2014-10-06T20:33:34.626842+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/packages/httpstream/http.py", line 803, in get
2014-10-06T20:33:34.627276+00:00 app[web.1]:     return rq.submit(redirect_limit=redirect_limit, **kwargs)
2014-10-06T20:33:34.627279+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/packages/httpstream/http.py", line 388, in submit
2014-10-06T20:33:34.627281+00:00 app[web.1]:     http, rs = submit(self.method, uri, self.body, headers)
2014-10-06T20:33:34.627282+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/py2neo/packages/httpstream/http.py", line 328, in submit
2014-10-06T20:33:34.627288+00:00 app[web.1]:     raise SocketError(code, description, host_port=uri.host_port)
2014-10-06T20:33:34.627290+00:00 app[web.1]: py2neo.packages.httpstream.http.SocketError: Connection refused
2014-10-06T20:33:34.626336+00:00 app[web.1]: Traceback (most recent call last):
2014-10-06T20:33:35.495790+00:00 heroku[web.1]: Process exited with status 1
2014-10-06T20:33:35.505975+00:00 heroku[web.1]: State changed from starting to crashed

我也试过了:

代码语言:javascript
复制
session = cypher.Session(URI(graphenedb_url).resolve("/"))

但这在本地甚至不起作用。我试着翻看了石墨烯文档,但没找到。

有什么建议吗?

更新:如果我这样做了:

代码语言:javascript
复制
session = cypher.Session(os.environ.get("GRAPHENEDB_URL"))
tx = session.create_transaction()
tx.append("MATCH n RETURN n") 
results = tx.execute()
for r in results[0]:
      r.values[0]

我得到了:

代码语言:javascript
复制
Node('http://localhost:0/db/data/node/40')
Node('http://localhost:0/db/data/node/41')
Node('http://localhost:0/db/data/node/42')

我猜端口应该是7474而不是0?或者这不应该是Node('GRAPHENEDB_URI/db/data/node/40')而不是本地主机吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-07 18:16:00

这是一个bug in Neo4j。事务提交URL的问题已在2.1.5中修复,但节点的URL仍然错误。

我已经更新了这个问题,并且它已经重新打开了。

AFAIK它只影响事务端点,所以REST接口的其他端点应该是可以的。

我能想到的唯一解决办法就是在Py2neo中使用网址重写,就像documented here一样。

我希望这个问题很快得到解决,我真的很抱歉,我没有任何其他选择让你解决这个问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26224536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档