multiple instance on Unix
Jeremy Jones
zanesdad at bellsouth.net
Thu Sep 30 11:31:32 EDT 2004
Grant Edwards wrote:
>On 2004-09-30, Nigel King <nigel.king at orthogonsystems.com> wrote:
>
>
>>On 30 Sep 2004, at 14:11, C Ginger wrote:
>>
>>
>>
>>>I know the approach to creating a lock file has been around a
>>>long time but there are certain weaknesses to it. There are a
>>>number of race conditions in it. For instance if process A
>>>detects the directory isn't there it will attempt to create
>>>it. During that same time process B might also not find it
>>>there - since A hasn't completed its create yet.
>>>
>>>
>>This was why I created a directory rather than a file since I
>>thought this was supposed to be atomic.
>>
>>
>
>AFAIK, creating a file is atomic as well. It's the approach
>that's been used by Unix applications for the past 30 years, so
>if it wasn't atomic, I would think somebody else would have
>noticed the problem and switched to using a lock directory
>before now.
>
>
>
Right. But I think the OP's point was that os.mkdir() raises an
exception if a directory already exists, so you can wrap that in a while
loop and just keep doing
try:
os.mkdir('/foo')
except OSError:
time.sleep(1)
#do stuff
os.rmdir()
and once you get in the #do stuff section, you know you have an
exclusive lock. Until this posting, I didn't know that:
os.open('f.txt', os.O_CREAT, os.O_EXCL)
would basically do the same thing.
Jeremy Jones
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20040930/5cdfdb1f/attachment.html>
More information about the Python-list
mailing list