Always try to find new peers for optional files if no workers

This commit is contained in:
shortcutme 2017-04-01 22:29:49 +02:00
parent 16f7a6d3cb
commit cfb2276ecd
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -77,18 +77,22 @@ class WorkerManager(object):
) )
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"]: if self.workers:
ask_limit = 20 if not task["time_started"]:
elif task["priority"] > 0: ask_limit = 20
ask_limit = max(10, time.time() - task["time_started"]) elif task["priority"] > 0:
else: ask_limit = max(10, time.time() - task["time_started"])
ask_limit = max(10, (time.time() - task["time_started"]) / 2) else:
if len(self.asked_peers) < ask_limit and len(task["peers"] or []) <= len(task["failed"]) * 2: ask_limit = max(10, (time.time() - task["time_started"]) / 2)
# Re-search for high priority if len(self.asked_peers) < ask_limit and len(task["peers"] or []) <= len(task["failed"]) * 2:
self.startFindOptional(find_more=True) # Re-search for high priority
self.startFindOptional(find_more=True)
elif task["peers"]: elif task["peers"]:
if not self.workers: peers_try = [peer for peer in task["peers"] if peer not in task["failed"]]
self.startWorkers([peer for peer in task["peers"] if peer not in task["failed"]]) if peers_try:
self.startWorkers(peers_try)
else:
self.startFindOptional(find_more=True)
else: else:
if task["peers"]: # Release the peer lock if task["peers"]: # Release the peer lock
self.log.debug("Task peer lock release: %s" % task["inner_path"]) self.log.debug("Task peer lock release: %s" % task["inner_path"])