我从事的一个项目需要通过py2neo将大量信息快速播放到Neo4J中,我在尝试使用Python的多处理库来加快进程时遇到了一个障碍
总的来说,我们所做的是双重的,这两个部分是同时发生的:
第1部分:
第2部分:
出现的问题发生在第2部分,特别是在更新或创建关系或节点时。py2neo正在抛出一个py2neo.database.TransientError
,根据文档,它是:
The database cannot service the request right now, retrying later might yield a successful outcome.
我已经尝试添加一个安全检查,该检查将重新尝试事务X次,并将其重新推送到kafka主题,以便在X次尝试失败后另一个线程尝试,但最终结果仍然不正确
当涉及到多线程/多处理时,我非常无知,所以我觉得我最初的研究工作已经严重偏离了基础,我浪费了很多周期试图纠正这一点——任何方向或见解都是非常值得赞赏的
如有必要,可以提供其他信息--不确定我可能遗漏了什么
谢谢
我认为问题在于您试图写入被其他查询阻止的节点/关系。这独立于py2neo,在使用另一个库/框架进行并行写入时,您应该会遇到类似的问题。请参见此处:https://neo4j.com/docs/java-reference/4.0/transaction-management/locking/
在这种情况下,py2neo错误和文档没有多大帮助
重试X次可能适用于较小的工作负载,您可以预期写锁会很快释放。但是,如果您不断地在图形的相同部分写入数据,则无法预测行为。有些写操作可能会永远卡在循环中
可能的解决方案
相关问题 更多 >
编程相关推荐