Reduce findoptional spam
This commit is contained in:
parent
a3d21f5377
commit
2048648b39
1 changed files with 20 additions and 4 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue