【问题标题】:How to keep a Neo4j bolt session open?如何保持 Neo4j 螺栓会话打开?
【发布时间】:2023-03-22 10:12:02
【问题描述】:

我使用的是 Neo4j 3.1.1 社区版。我正在尝试使用官方支持的 python 驱动程序通过 python 从数据库中获取大约 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. 或者有没有神奇的“第三种方法”来完成它?

【问题讨论】:

  • 你有没有得到这个问题的答案?我在 3.4.x 中使用浏览器时遇到了类似的问题

标签: python neo4j cypher


【解决方案1】:

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

检索大量数据的正确方法是page your results。从本质上讲,返回大量但易于管理的数据块,并在您准备好后请求下一个数据块(或在处理最后一个块时异步)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    相关资源
    最近更新 更多