Anular la función de salida de ipython, o agregarle ganchos

En mi proyectogestionar, Estoy incrustando iPython con:

from IPython import start_ipython
from traitlets.config import Config
c = Config()
c.TerminalInteractiveShell.banner2 = "Welcome to my shell"
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
start_ipython(argv=[], user_ns={}, config=c)

Funciona bien y abre mi consola iPython, pero para salir de ipython solo puedo escribirexit oexit() o presionectrl+D.

Lo que quiero hacer es agregar unexit hook o reemplazar esoexit comando con otra cosa.

Digamos que tengo una función.

def teardown_my_shell():
    # things I want to happen when iPython exits

¿Cómo registro esa función para que se ejecute cuandoexit o incluso cómo hacerexit para ejecutar esa función?

NOTA: intenté pasaruser_ns={'exit': teardown_my_shell} y no funciona

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta