[BangPypers] Restart when python script hangs

Sateesh Kumar sateeshpyper at gmail.com
Mon Jun 2 15:26:33 CEST 2014


On Mon, Jun 2, 2014 at 3:14 PM, Rahul Gopan <rahulpcet19 at gmail.com> wrote:

> Hello,
>
> When I run a python script it hangs at random places. Is there any way to
> identify when the script hangs and to resume it automatically. When I see
> that it is not responding i do ^Z (Ctrl -Z) to stop and then use fg command
> to start it again. I want to automate this.
>
>
As others have already suggested it is not a good idea to silently ignore
the errors,
so you should debug your script to understand where exactly the script
would hang.

You can get a trace of the script state when you press 'Ctrl+Z' by handling
the signal and making use of the 'inspect' module.

Consider the below sample code:

% cat signal.py

import signal
import time
import inspect

# Register function 'signal_handler' to handle the signal 'Ctrl+Z'
signal.signal(signal.SIGTSTP, signal_handler)

def signal_handler(signal, frame):
    print "You pressed Ctrl+Z\n";
    frame,filename,line_number,function_name,lines,index =
inspect.getouterframes(inspect.currentframe())[1]
    print(frame,filename,line_number,function_name,lines,index)



def signal_check():
    while (1):
        time.sleep(5)

if __name__ == '__main__':
    signal_check()


When the above script is running, pressing 'Ctrl+Z' would yield below
output and
the script would continue its execution.

% python signal.py
Hello
...
You pressed Ctrl+Z

(<frame object at 0x1a7ae770>, 'signal.py', 16, 'signal_check', ['
 time.sleep(5)\n'], 0)

Hello
Hello
...


The output from inspect:
frame,filename,line_number,function_name,lines,index =
inspect.getouterframes(inspect.currentframe())[1]
will give details like name of the function which resulted in call for
signal handler, line number etc.

Refer to the documentation of 'signal' module for more details on using
this module for signal handling.
https://docs.python.org/2/library/signal.html#module-signal

reg,
sateesh


More information about the BangPypers mailing list