I'm dealing with a python-written server that locks up, and stops working, including logging. I wonder if there's a python equivalent to java's "kill -3" signal that at least prints the current stacktrace.
            Asked
            
        
        
            Active
            
        
            Viewed 4,878 times
        
    3 Answers
7
            
            
        Use the faulthandler module. https://pypi.python.org/pypi/faulthandler/
import faulthandler
faulthandler.register(signal.SIGUSR1)
This works outside of Python's interpreter loop's signal handling at the C level so it will work even when the Python interpreter itself is hung waiting on something else.
 
    
    
        gps
        
- 1,360
- 12
- 12
- 
                    As you hint, `faulthandler` is included in the standard library from Python 3.3+ – rescdsk Apr 16 '15 at 18:57
2
            
            
        import signal, traceback
def quit_handler(signum,frame):
    traceback.print_stack()
signal.signal(signal.SIGQUIT,quit_handler)
 
    
    
        John La Rooy
        
- 295,403
- 53
- 369
- 502
- 
                    If the server "locks up", it doesn't necessarily get a SIGQUIT signal, I guess. – AndiDog Jan 29 '10 at 21:35
- 
                    @AndiDog: I think you're supposed to use `kill(1)` to send it one when you manually detect that it has locked up. – SamB Nov 21 '10 at 18:24
 
     
    