[Twisted-Python] Problem: spawnProcess() never ending when installSignalHandlers=False

James Y Knight foom at fuhm.net
Sat Jun 11 11:40:11 EDT 2005


On Jun 11, 2005, at 11:08 AM, Matt Feifarek wrote:
> So this behavior is by design? Again, it DID work before; for the last
> year or so, I've been using this code in production on a few servers.
>
> Perhaps a note could be made in the docs that ProcessProtocol doesn't
> work in this case.

There is one. It logs "spawnProcess called, but the SIGCHLD handler  
is not installed. This probably means you have not yet called  
reactor.run, or called reactor.run(installSignalHandler=0). You will  
probably never see this process finish, and it may become a zombie  
process." However, your example doesn't have logging setup, so you  
don't see that message.

> This will make it pretty hard to integrate into other worlds. I'm not
> sure that I can over-ride the signal handling in Webware and register
> handlers. Other bits of python libraries might be the same way.
>
> I look forward to any "more general solution" that anyone can come  
> up with!

If you cannot override the signal handling, do something like:

from twisted.internet import task
task.LoopingCall(process.reapAllProcesses).start(1.0, now=False)

That's less efficient but will work. I have a vague recollection that  
in old versions twisted used to do this by default but I might just  
be making that up.

James




More information about the Twisted-Python mailing list