From e4af2d5e86f7d3f5b1f09c2e7b23893267ab5c43 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Mon, 17 Sep 2018 15:30:48 +0200 Subject: [PATCH] Pick up task that is taken by idle peer --- src/Worker/Worker.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Worker/Worker.py b/src/Worker/Worker.py index 5c5bfaf9..9d3bb616 100644 --- a/src/Worker/Worker.py +++ b/src/Worker/Worker.py @@ -60,6 +60,18 @@ class Worker(object): )) break + if sleep_i % 10 == 0: + workers = self.manager.findWorkers(task) + if not workers or not workers[0].peer.connection: + break + worker_idle = time.time() - workers[0].peer.connection.last_recv_time + if worker_idle > 1: + if config.verbose: + self.manager.log.debug("%s: %s, worker %s seems idle, picked up task after %ss sleep. (done: %s)" % ( + self.key, task["inner_path"], workers[0].key, 0.1 * sleep_i, task["done"] + )) + break + if task["done"]: continue