Log lock waits for task adding in WorkerManager
This commit is contained in:
parent
7ca09ba75b
commit
0881e274a9
2 changed files with 26 additions and 1 deletions
24
src/Debug/DebugLock.py
Normal file
24
src/Debug/DebugLock.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
import time
|
||||
import logging
|
||||
|
||||
import gevent.lock
|
||||
|
||||
from Debug import Debug
|
||||
|
||||
|
||||
class DebugLock:
|
||||
def __init__(self, log_after=0.01, name="Lock"):
|
||||
self.name = name
|
||||
self.log_after = log_after
|
||||
self.lock = gevent.lock.Semaphore(1)
|
||||
self.release = self.lock.release
|
||||
|
||||
def acquire(self, *args, **kwargs):
|
||||
s = time.time()
|
||||
res = self.lock.acquire(*args, **kwargs)
|
||||
time_taken = time.time() - s
|
||||
if time_taken >= self.log_after:
|
||||
logging.debug("%s: Waited %.3fs after called by %s" %
|
||||
(self.name, time_taken, Debug.formatStack())
|
||||
)
|
||||
return res
|
|
@ -9,6 +9,7 @@ from .WorkerTaskManager import WorkerTaskManager
|
|||
from Config import config
|
||||
from util import helper
|
||||
from Plugin import PluginManager
|
||||
from Debug.DebugLock import DebugLock
|
||||
import util
|
||||
|
||||
|
||||
|
@ -20,7 +21,7 @@ class WorkerManager(object):
|
|||
self.workers = {} # Key: ip:port, Value: Worker.Worker
|
||||
self.tasks = WorkerTaskManager()
|
||||
self.next_task_id = 1
|
||||
self.lock_add_task = gevent.lock.Semaphore(1)
|
||||
self.lock_add_task = DebugLock()
|
||||
# {"id": 1, "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, "lock": None or gevent.lock.RLock}
|
||||
self.started_task_num = 0 # Last added task num
|
||||
|
|
Loading…
Reference in a new issue