This is a huge PITA. To take care of this in Twistar, I added a reconnecting class. A ReconnectingMySQLConnectionPool can be used instead of a adbapi.ConnectionPool:
When using the ReconnectingMySQLConnectionPool, any connection breaks from MySQL will result in the ConnectionPool reconnecting and attempting to execute a transaction a second time. This at least alleviates the problem when using the MySQLdb driver.