En Fri, 29 Jan 2010 12:54:23 -0300, Thomas Allen <thomasmal...@gmail.com> escribió:

I have a script that runs an instance of SimpleXMLRPCServer and in
general it works as expected. In its __del__, it is supposed to clean
up its PID file (written on boot). I have two problems with this
server instance: The first is that tt doesn't always clean up its PID
file; is there a more reliable way to do this than how I am currently?
The second is that when it does crash, I don't know about it...what
would be sufficient as a "keep-alive" script to restart it? I suppose
I could use something like EventMachine (already installed on my
server) to watch the PID file if it were deleted reliably.

I agree with the recommendation of using some daemon library; doing it right is better left to the experts :)
But if you can't or don't want to alter your code so much, I suggest:

 - use atexit.register, instead of __del__, to delete the PID file
- keep a lock on the pid file; if a second instance is able to write to it, it means it's an orphan from a previous, aborted run. (Checking whether a process with such pid exists is not enough - pids are recycled rather fast)

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to