Show More
@@ -29,14 +29,13 b' class lock(object):' | |||||
29 | # old-style lock: symlink to pid |
|
29 | # old-style lock: symlink to pid | |
30 | # new-style lock: symlink to hostname:pid |
|
30 | # new-style lock: symlink to hostname:pid | |
31 |
|
31 | |||
|
32 | _host = None | |||
|
33 | ||||
32 | def __init__(self, file, timeout=-1, releasefn=None, desc=None): |
|
34 | def __init__(self, file, timeout=-1, releasefn=None, desc=None): | |
33 | self.f = file |
|
35 | self.f = file | |
34 | self.held = 0 |
|
36 | self.held = 0 | |
35 | self.timeout = timeout |
|
37 | self.timeout = timeout | |
36 | self.releasefn = releasefn |
|
38 | self.releasefn = releasefn | |
37 | self.id = None |
|
|||
38 | self.host = None |
|
|||
39 | self.pid = None |
|
|||
40 | self.desc = desc |
|
39 | self.desc = desc | |
41 | self.lock() |
|
40 | self.lock() | |
42 |
|
41 | |||
@@ -59,13 +58,12 b' class lock(object):' | |||||
59 | inst.locker) |
|
58 | inst.locker) | |
60 |
|
59 | |||
61 | def trylock(self): |
|
60 | def trylock(self): | |
62 |
if |
|
61 | if lock._host is None: | |
63 |
|
|
62 | lock._host = socket.gethostname() | |
64 | self.pid = os.getpid() |
|
63 | lockname = lock._host + ':' + str(os.getpid()) | |
65 | self.id = '%s:%s' % (self.host, self.pid) |
|
|||
66 | while not self.held: |
|
64 | while not self.held: | |
67 | try: |
|
65 | try: | |
68 |
util.makelock( |
|
66 | util.makelock(lockname, self.f) | |
69 | self.held = 1 |
|
67 | self.held = 1 | |
70 | except (OSError, IOError), why: |
|
68 | except (OSError, IOError), why: | |
71 | if why.errno == errno.EEXIST: |
|
69 | if why.errno == errno.EEXIST: | |
@@ -93,7 +91,7 b' class lock(object):' | |||||
93 | host, pid = locker.split(":", 1) |
|
91 | host, pid = locker.split(":", 1) | |
94 | except ValueError: |
|
92 | except ValueError: | |
95 | return locker |
|
93 | return locker | |
96 |
if host != |
|
94 | if host != lock._host: | |
97 | return locker |
|
95 | return locker | |
98 | try: |
|
96 | try: | |
99 | pid = int(pid) |
|
97 | pid = int(pid) |
General Comments 0
You need to be logged in to leave comments.
Login now