Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
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