how to start a python script only once

Francesco Bochicchio bieffe62 at gmail.com
Sun Mar 14 09:51:58 CET 2010


On 13 Mar, 19:45, News123 <news1... at free.fr> wrote:
> Hi,
>
> I'd like to make sure, that a certain python program will only be run
> once per host. (linux/windows)
>
> so if the program is started a second time it should just terminate and
> let the other one run.
>
> This does not have to be the fastest solution, but it should be reliable.
>
> I have a few ideas, but wonder, which one is the most common
>
> My ideas so far:
>
> pid file and file locking
> --------------------------
> create a file like program.pid  with the pid of the running program an
> use file locking to avoid race connditions.
>
> However I currently don't know how to do file locking under windows
> and I don't know how to do file lockng with python and linux.
> I'll start googling.
>
> sqlite and locking
> --------------------
> quite some time ago I used a mysql table and locking as an inter-host mutex.
>
> Perhaps sqlite would be good enough for an inter process mutex for
> processes on the same host, but I don't know it well enough.
>
> interprocess mutex
> --------------------
> well I even don't know whether something like this exists on linux / windows
>
> Thanks in advanced for any tips
>
> N

Apart from file, a portable solution would be to bind to an unused
porta and assume that finding the port busy means that your program is
already running on the port.

On recent python installations there is the multiprocessing module
which provides process-level semaphores, but I don't know how portable
they are.

Ciao
----
FB



More information about the Python-list mailing list