[Twisted-Python] spawnProcess() works after reactor.stop()

Paul Thomas spongelavapaul at googlemail.com
Mon Jan 19 06:09:06 EST 2009


I'm using SelectReactor on Linux for a system that spawns a lot of sub- 
processes. I'm finding that there are some cases where a signal to the  
twistd process doesn't reap the children and I think it's because the  
SIGINT handler defers the shutdown but doesn't prevent spawnProcess()  
from working in the meantime.

What's happening is the signal gets handled by calling stop(). This  
sets a flag and schedules the shutdown event for later.
  - Then Linux signals all the sub-processes.
  - Then my code gets scheduled and spawns a process or 2.
  - The shutdown event runs

The result is that any process spawned after the signal is orphaned.

So, my question is: is this a bug in the reactor (should it check  
self._stopped)?

If it's a bug, I expect it's a bit more general than just processes -  
would it be better to have the select loop check _stopped.

If it's not a bug, would it be possible to add a public accessor for  
the stopped state so application code can decide whether to run or not?

ta,
pt.




More information about the Twisted-Python mailing list