Gracefull application exit.

Tim Golden mail at timgolden.me.uk
Thu Jul 24 18:19:08 CEST 2008


Robert Rawlins wrote:
> I’m looking to implement an exit/termination process for an application 
> which can be triggered by A) a keyboard interrupt or B) termination of 
> the application as a Daemon using a signal.
> 
> I have a whole bunch of tasks I want to perform as a cleanup before the 
> application is terminated, cleaning files, database calls, closing open 
> connections and a few other things.
> 
> I know we have:
> 
> # I'm the main application started method.
> 
> if __name__ == /"__main__"/:
> 
> For starting an application, but do we have an equivalent methods for 
> when an application is terminated which we can use to close down any 
> current internal processes before the application exits?
> 
> I’d really love to have your thoughts and experience on gracefully 
> killing an application.

You want to look at the atexit module:

http://docs.python.org/lib/module-atexit.html

but mind the caveats:

"""
Note: the functions registered via this module are not 
called when the program is killed by a signal, when a 
Python fatal internal error is detected, or when 
os._exit() is called. 
"""

TJG




More information about the Python-list mailing list