version 0.2.6, database support, dbrebuild and dbquery startup commands, connection firstchar error bugfix, log python gevent msgpack lib versions, sitestorage class for site file operations, dbquery websocket api command

This commit is contained in:
HelloZeroNet 2015-03-19 21:19:14 +01:00
parent bce0f56d45
commit 3b8d49207e
16 changed files with 699 additions and 120 deletions
src/Worker

View file

@ -38,27 +38,26 @@ class Worker:
if task["done"] == False:
self.task = task
site = task["site"]
task["workers_num"] += 1
buff = self.peer.getFile(task["site"].address, task["inner_path"])
buff = self.peer.getFile(site.address, task["inner_path"])
if self.running == False: # Worker no longer needed or got killed
self.manager.log.debug("%s: No longer needed, returning: %s" % (self.key, task["inner_path"]))
break
if buff: # Download ok
correct = task["site"].content_manager.verifyFile(task["inner_path"], buff)
correct = site.content_manager.verifyFile(task["inner_path"], buff)
else: # Download error
correct = False
if correct == True or correct == None: # Hash ok or same file
self.manager.log.debug("%s: Hash correct: %s" % (self.key, task["inner_path"]))
if task["done"] == False: # Task not done yet
if correct == True and task["done"] == False: # Save if changed and task not done yet
buff.seek(0)
file_path = task["site"].getPath(task["inner_path"])
file_path = site.storage.getPath(task["inner_path"])
file_dir = os.path.dirname(file_path)
if not os.path.isdir(file_dir): os.makedirs(file_dir) # Make directory for files
file = open(file_path, "wb")
shutil.copyfileobj(buff, file) # Write buff to disk
file.close()
task["workers_num"] -= 1
self.manager.doneTask(task)
site.storage.write(task["inner_path"], buff)
if task["done"] == False: self.manager.doneTask(task)
task["workers_num"] -= 1
self.task = None
else: # Hash failed
self.manager.log.debug("%s: Hash failed: %s, failed peers: %s" % (self.key, task["inner_path"], len(task["failed"])))