python: sqlalchemy: ¿cómo puedo garantizar que la conexión no sea obsoleta con el nuevo sistema de eventos?

Estoy usando el paquete sqlalchemy en python. Tengo una operación que tarda en ejecutarse después de realizar una carga automática en una tabla existente. Esto provoca el siguiente error cuando intento usar la conexión:

sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away')

Tengo una función de utilidad simple que realiza una inserción de muchos:

def insert_data(data_2_insert, table_name):
    engine = create_engine('mysql://blah:blah123@localhost/dbname')
    # Metadata is a Table catalog. 
    metadata = MetaData()
    table = Table(table_name, metadata, autoload=True, autoload_with=engine)
    for c in mytable.c:
        print c
    column_names = tuple(c.name for c in mytable.c)
    final_data = [dict(zip(column_names, x)) for x in data_2_insert]
    ins = mytable.insert()
    conn = engine.connect()
    conn.execute(ins, final_data)
    conn.close()

Es la siguiente línea que se ejecuta durante mucho tiempo ya que 'data_2_insert' tiene 677,161 filas.

final_data = [dict(zip(column_names, x)) for x in data_2_insert]

Me encontré conesta pregunta que se refiere a un problema similar. Sin embargo, no estoy seguro de cómo implementar la gestión de conexión sugerida por elrespuesta aceptada porque robots.jpg señaló esto en un comentario:

Nota para SQLAlchemy 0.7: PoolListener está en desuso, pero la misma solución se puede implementar utilizando el nuevosistema de eventos.

Si alguien me puede mostrar algunos consejos sobre cómo podría integrar las sugerencias en la forma en que uso sqlalchemy, le agradecería mucho. Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta