diff --git a/src/Worker/WorkerManager.py b/src/Worker/WorkerManager.py index 5b0e9763..5bdcd83d 100644 --- a/src/Worker/WorkerManager.py +++ b/src/Worker/WorkerManager.py @@ -213,9 +213,8 @@ class WorkerManager(object): return found # Start find peers for optional files - @util.Noparallel(blocking=False) - def startFindOptional(self, reset_task=False, find_more=False): - time.sleep(0.01) # Wait for more file requests + @util.Noparallel(blocking=False, ignore_args=True) + def startFindOptional(self, reset_task=False, find_more=False, high_priority=False): optional_tasks = [task for task in self.tasks if task["optional_hash_id"]] optional_hash_ids = set([task["optional_hash_id"] for task in optional_tasks]) self.log.debug( diff --git a/src/util/Noparallel.py b/src/util/Noparallel.py index eaf75eed..dc4b565e 100644 --- a/src/util/Noparallel.py +++ b/src/util/Noparallel.py @@ -4,13 +4,17 @@ import time class Noparallel(object): # Only allow function running once in same time - def __init__(self, blocking=True): + def __init__(self, blocking=True, ignore_args=False): self.threads = {} self.blocking = blocking # Blocking: Acts like normal function else thread returned + self.ignore_args = ignore_args def __call__(self, func): def wrapper(*args, **kwargs): - key = (func, tuple(args), str(kwargs)) # Unique key for function including parameters + if self.ignore_args: + key = func # Unique key only by function + else: + key = (func, tuple(args), str(kwargs)) # Unique key for function including parameters if key in self.threads: # Thread already running (if using blocking mode) thread = self.threads[key] if self.blocking: