如何保持Neo4j螺栓会话打开?

时间:2017-03-21 15:09:59

标签: python neo4j cypher

我正在使用Neo4j 3.1.1社区版。我试图通过python使用官方支持的python驱动程序从db获取大约8000万个条目。 python脚本针对localhost运行,即与Neo4j在同一台机器上,而不是通过网络运行。访问Neo4j一切正常,直到它成为现实:

result = session.run("match (n:Label) return n.Property as property")
property_list = [record["property"] for record in result]

组装property_list实际上失败了错误陈述:

  

File "...\neo4j\bolt\connection.py", line 124, in fill raise ServiceUnavailable("Failed to read from connection %r" % (self.address,)) neo4j.bolt.connection.ServiceUnavailable: Failed to read from connection Address(host='127.0.0.1', port=7687)

当获取较小的数据集从而组装较小的列表时,相同的代码可以正常工作。

现在我想知道:

  1. 是否有保持螺栓会话打开的选项?
  2. 我是否必须以某种方式配置/调整Neo4j服务器以启用此类交易?
  3. 或者是否有一种魔力"第三种方式"完成它?

1 个答案:

答案 0 :(得分:0)

这种从数据库中检索数据的方法实际上是一种坏习惯,因为您可能会面临连接超时(客户端和服务器端),服务器OOM(内存不足)/ DOS(拒绝服务),应用程序OOM / DOS的风险以及更多。

检索大量数据的正确方法是访问page your results。本质上,返回大但可管理的数据块,并在准备就绪时请求下一个卡盘(或在处理最后一个块时异步)。