Reduce findoptional spam

This commit is contained in:
shortcutme 2016-11-07 23:32:20 +01:00
parent a3d21f5377
commit 2048648b39

View file

@ -22,6 +22,7 @@ class WorkerManager(object):
# {"evt": evt, "workers_num": 0, "site": self.site, "inner_path": inner_path, "done": False, "optional_hash_id": None, # {"evt": evt, "workers_num": 0, "site": self.site, "inner_path": inner_path, "done": False, "optional_hash_id": None,
# "time_started": None, "time_added": time.time(), "peers": peers, "priority": 0, "failed": peer_ids} # "time_started": None, "time_added": time.time(), "peers": peers, "priority": 0, "failed": peer_ids}
self.started_task_num = 0 # Last added task num self.started_task_num = 0 # Last added task num
self.asked_peers = []
self.running = True self.running = True
self.time_task_added = 0 self.time_task_added = 0
self.log = logging.getLogger("WorkerManager:%s" % self.site.address_short) self.log = logging.getLogger("WorkerManager:%s" % self.site.address_short)
@ -68,11 +69,22 @@ class WorkerManager(object):
# Find more workers: Task started more than 15 sec ago or no workers # Find more workers: Task started more than 15 sec ago or no workers
workers = self.findWorkers(task) workers = self.findWorkers(task)
self.log.debug( self.log.debug(
"Task taking more than 15+%s secs, workers: %s find more peers: %s (optional_hash_id: %s)" % "Slow task: %s 15+%ss, (workers: %s, optional_hash_id: %s, peers: %s, failed: %s, asked: %s)" %
(size_extra_time, len(workers), task["inner_path"], task["optional_hash_id"]) (
task["inner_path"], size_extra_time, len(workers), task["optional_hash_id"],
len(task["peers"] or []), len(task["failed"]), len(self.asked_peers)
)
) )
task["site"].announce(mode="more") # Find more peers task["site"].announce(mode="more") # Find more peers
if task["optional_hash_id"]: if task["optional_hash_id"]:
if not task["time_started"]:
ask_limit = 20
elif task["priority"] > 0:
ask_limit = max(10, time.time() - task["time_started"])
else:
ask_limit = max(10, (time.time() - task["time_started"]) / 2)
if len(self.asked_peers) < ask_limit and len(task["peers"] or []) <= len(task["failed"]) * 2:
# Re-search for high priority
self.startFindOptional(find_more=True) self.startFindOptional(find_more=True)
else: else:
if task["peers"]: # Release the peer lock if task["peers"]: # Release the peer lock
@ -428,9 +440,13 @@ class WorkerManager(object):
self.time_task_added = time.time() self.time_task_added = time.time()
if optional_hash_id: if optional_hash_id:
self.startFindOptional() if self.asked_peers:
del self.asked_peers[:] # Reset asked peers
self.startFindOptional(high_priority=priority > 0)
if peers: if peers:
self.startWorkers(peers) self.startWorkers(peers)
else: else:
self.startWorkers(peers) self.startWorkers(peers)
return evt return evt