Frasco en Heroku: request.form es increíblemente lento con grandes datos POST?

Estoy ejecutando una aplicación Flask en Heroku usando Gunicorn con trabajadores eventlet. Una ruta en particular en mi aplicación con frecuencia recibe datos POST (x-www-form-urlencoded) con algunos campos bastante gruesos, en el orden de 500 KB como máximo.

Esto funciona bien cuando se ejecuta localmente, pero en Heroku, las solicitudes a esa ruta tardan entre 5 y 30 segundos en completarse, y casi el 100% del tiempo se pasa en el primer acceso a request.form:

t = time.time()
action = str(request.form['action'])
dt = time.time() - t  # Often 10 seconds or more!

Esto es confirmado por el rastreo de solicitudes lentas de Newrelic también. Hay unos pocos milisegundos aquí o allá para las operaciones de la base de datos, y luego una gran cantidad de tiempo en el código de Python, que aparentemente se invierte en algunos I / O, ya que el tiempo de CPU informado suele ser inferior a un milisegundo.

No he podido reproducir esto en un entorno local utilizando la misma configuración de gunicorn / eventlet que estoy usando en producción. Incluso el servidor WSGI de depuración incorporado es muy rápido en estas solicitudes.

¿Alguien tiene alguna idea de lo que podría salir mal? ¿Es un problema con Flask, o algo sobre lo que necesito comunicarme con el soporte de Heroku?

Respuestas a la pregunta(1)

Su respuesta a la pregunta