我正在使用twisted 开发P2P 应用程序。我试图在我的 DHT 中重复搜索特定键,并在值更改时将其添加到字典中。代码或多或少在做我想要完成的事情,除了一旦我得到一个新值,我仍然有多个正在运行的请求。这有时会给我一个运行时错误,说我已经超过了最大递归深度。我怎样才能改变这一点,以便一次只运行一个获取请求,但它仍然不断搜索?我以前从未使用过twisted,所以我仍在努力掌握它。
#want this to loop repeatedly looking for new ids
def addid(val,server,key):
print "Val: ",val
if val:
if not val in ids:
print "new id found"
valhash = hashlib.sha1()
valhash.update(str(val))
newval = valhash.hexdigest()
ids[val]=newval
server.set(ids[val], str(val))
server.get(key).addCallback(addid,server,key)
def bootstrapDone(found, server):
if len(found) == 0:
print "Could not connect to the bootstrap server."
reactor.stop()
key = hashlib.sha1()
key.update('specialstring')
keyhash = key.hexdigest()
server.get(keyhash).addCallback(addid,server,keyhash)