equal
deleted
inserted
replaced
14 pass |
14 pass |
15 class LockUnavailable(LockException): |
15 class LockUnavailable(LockException): |
16 pass |
16 pass |
17 |
17 |
18 class lock(object): |
18 class lock(object): |
19 def __init__(self, file, wait=1, releasefn=None): |
19 def __init__(self, file, timeout=-1, releasefn=None): |
20 self.f = file |
20 self.f = file |
21 self.held = 0 |
21 self.held = 0 |
22 self.wait = wait |
22 self.timeout = timeout |
23 self.releasefn = releasefn |
23 self.releasefn = releasefn |
24 self.lock() |
24 self.lock() |
25 |
25 |
26 def __del__(self): |
26 def __del__(self): |
27 self.release() |
27 self.release() |
28 |
28 |
29 def lock(self): |
29 def lock(self): |
|
30 timeout = self.timeout |
30 while 1: |
31 while 1: |
31 try: |
32 try: |
32 self.trylock() |
33 self.trylock() |
33 return 1 |
34 return 1 |
34 except LockHeld, inst: |
35 except LockHeld, inst: |
35 if self.wait: |
36 if timeout != 0: |
36 time.sleep(1) |
37 time.sleep(1) |
|
38 if timeout > 0: |
|
39 timeout -= 1 |
37 continue |
40 continue |
38 raise inst |
41 raise inst |
39 |
42 |
40 def trylock(self): |
43 def trylock(self): |
41 pid = os.getpid() |
44 pid = os.getpid() |