我有一个接收任务的服务,完成后它实例化一个名为SubmitPy2neo的类,该类继承自Thread类,使用python中的py2neo将数据插入到我的neo4j数据库中。对于每个任务,我创建一个单独的线程以使事物并行并更快地将数据插入neo4j数据库。 然而,当事情变成多线程时,我会弹出这个错误
异常KeyError :( u' http://graphdb_server/db/data/relationship/123123')被忽略。
任何想法如何以多线程方式使用py2neo将这些任务插入Graph数据库?
多线程类如下
class Send_GraphDatabase(threading.Thread):
def __init__(self, JobNumber, whois=None, dig=None, hosts=None, extra_field=None):
threading.Thread.__init__(self)
self.JobNumber = JobNumber
self.whois = whois
self.dig = dig
self.hosts = hosts
self.extra_field = extra_field
def run(self):
gd = GraphDB_Driver(self.JobNumber,self.extra_field)
gd.StoreRoot()
gd.StoreURLs()
gd.externalStoreWappalyzer()
gd.StoreFiles()
if self.whois: gd.StoreWhois(self.whois)
if self.dig: gd.StoreDig(self.dig)
if self.hosts: gd.StoreHosts(self.hosts)
每当任务完成时,我都会创建一个这个类的实例并给它job_number以将这个作业提交给Graph数据库
在每个商店功能中,我做了类似于以下的事情
n = Node("LABEL", key1=val1,key2=val2)
self.g.create(n)
r = Relationship(src, "HAS", n)
self.g.create_unique(r)
所以我只需使用create()创建节点并使用create_unique创建关系
与graphdb交互答案 0 :(得分:0)
不要离题,但如果你真的关心neo4j性能,我建议你使用原始的cypher查询或gremlin。此外,我建议使用neo4j HTTP Rest Endpoint,因为py2neo中存在很多问题