Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
at main 24 lines 642 B view raw
1import time 2import logging 3 4import gevent.lock 5 6from Debug import Debug 7 8 9class DebugLock: 10 def __init__(self, log_after=0.01, name="Lock"): 11 self.name = name 12 self.log_after = log_after 13 self.lock = gevent.lock.Semaphore(1) 14 self.release = self.lock.release 15 16 def acquire(self, *args, **kwargs): 17 s = time.time() 18 res = self.lock.acquire(*args, **kwargs) 19 time_taken = time.time() - s 20 if time_taken >= self.log_after: 21 logging.debug("%s: Waited %.3fs after called by %s" % 22 (self.name, time_taken, Debug.formatStack()) 23 ) 24 return res