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:
parent
bce0f56d45
commit
3b8d49207e
16 changed files with 699 additions and 120 deletions
src/Worker
|
@ -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"])))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue