storage improvements

macdev
quadrismegistus 4 years ago
parent 3327098b45
commit a3c353d412

@ -681,6 +681,7 @@ def test_basic():
await node.set("my-key", "my awesome value2") await node.set("my-key", "my awesome value2")
await node.set("my-key", "my awesome value3") await node.set("my-key", "my awesome value3")
# get the value associated with "my-key" from the network # get the value associated with "my-key" from the network
result = await node.get("my-key") result = await node.get("my-key")

@ -38,7 +38,7 @@ class HalfForgetfulStorage(ForgetfulStorage):
# import shelve # import shelve
# self.data = shelve.open(self.fn,'a') # self.data = shelve.open(self.fn,'a')
import pickledb import pickledb
self.data = pickledb.load(self.fn,False) self.data = pickledb.load(self.fn,True)
#print('>> loaded %s keys' % len(self.data)) #print('>> loaded %s keys' % len(self.data))
@ -62,17 +62,20 @@ class HalfForgetfulStorage(ForgetfulStorage):
# except (KeyError,ValueError) as e: # except (KeyError,ValueError) as e:
# sofar = [] # sofar = []
sofar = self.data.get(key) sofar = self.data.get(key)
if type(sofar)!=list: sofar=[sofar] if not sofar: sofar=[]
print('SOFAR',sofar)
#sofar = [sofar] if sofar and type(sofar)!=list else []
print('SOFAR',sofar)
newdat = (time.monotonic(), value) newdat = (time.monotonic(), value)
newval = sofar + [newdat] newval = sofar + [newdat]
self.log('VALUE WAS',sofar) print('NEWVAL',newval)
#del self.data[key] #del self.data[key]
#self.data[key]=newval #self.data[key]=newval
self.data.set(key,newval) self.data.set(key,newval)
self.data.dump() # self.data.dump()
raise Exception('VALUE IS NOW'+str(self.data.get(key))) print('VALUE IS NOW'+str(self.data.get(key)))
#self.write() #self.write()
def set(key,value): def set(key,value):
@ -86,19 +89,25 @@ class HalfForgetfulStorage(ForgetfulStorage):
def get(self, key, default=None): def get(self, key, default=None):
# self.cull() # self.cull()
# print('looking for key: ', key) # print('looking for key: ', key)
if key in self.data: # if key in self.data:
val=list(self[key]) # val=list(self[key])
# print('...found it! = %s' % val) # # print('...found it! = %s' % val)
# return self[key]
# return default
return self[key] return self[key]
return default
def __getitem__(self, key): def __getitem__(self, key):
print(f'??!?\n{key}\n{self.data[key]}') # print(f'??!?\n{key}\n{self.data[key]}')
# return self.data[key][1] # return self.data[key][1]
# (skip time part of tuple) # (skip time part of tuple)
data_list = list(self.data.get(key)) try:
return [dat[1] for dat in data_list] val=self.data[key]
except KeyError:
val=[]
if not val: return []
data_list = list(val)
#return [dat[1] for dat in data_list]
return data_list
@ -171,8 +180,6 @@ def main(bind='0.0.0.0', port=8888,
loop.close() loop.close()
if __name__ == '__main__':
main()
log = logging.getLogger('kademlia') # pylint: disable=invalid-name log = logging.getLogger('kademlia') # pylint: disable=invalid-name
@ -324,4 +331,16 @@ class KadServer(Server):
#### NEVERMIND #### NEVERMIND
# KadServer = Server # KadServer = Server
import time
if __name__=='__main__':
# test
hfs = HalfForgetfulStorage(fn='test.db')
#hfs['a']=1
# time.sleep(2)
hfs['a']=1000
print(hfs['a'])
print(hfs['a'])
Loading…
Cancel
Save