py2neo插入多线程

时间:2015-06-11 11:37:37

标签: neo4j py2neo

我有一个接收任务的服务,完成后它实例化一个名为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交互

1 个答案:

答案 0 :(得分:0)

不要离题,但如果你真的关心neo4j性能,我建议你使用原始的cypher查询或gremlin。此外,我建议使用neo4j HTTP Rest Endpoint,因为py2neo中存在很多问题