On 09/04/2018 05:35 AM, Cameron Simpson wrote:
On 03Sep2018 07:45, Malcolm Greene <pyt...@bdurham.com> wrote:
Use case: Want to prevent 2+ instances of a script from running ...
ideally in a cross platform manner. I've been researching this topic and
am surprised how complicated this capability appears to be and how the
diverse the solution set is. I've seen solutions ranging from using
directories, named temporary files, named sockets/pipes, etc. Is there
any consensus on best practice here?
I like os.mkdir of a known directory name. This tends to be atomic and
forbidden when the name already exists, on all UNIX platforms, over
remote filesystems. And, I expect, likewise on Windows.
The trouble with a simple lock file (or directory) is of course that it
can't recover from the program being killed or from program or system
crashes without manual intervention. For some use cases that's fine, for
others it's a problem.
All the other modes like opening files O_EXCL etc tend to be platform
specific and not reliable over network filesystems.
And pid based approaches don't work cross machine, if that is an issue.
I think a PID file is the traditional approach for *nix daemons, but as
you say, it does have its own drawbacks.
-- Thomas
--
https://mail.python.org/mailman/listinfo/python-list