Flask on Heroku: request.form é incrivelmente lento com grandes dados POST?

Eu estou executando um aplicativo Flask em Heroku usando gunicorn com os trabalhadores do eventlet. Uma rota em particular no meu aplicativo recebe com frequência dados POST (x-www-form-urlencoded) com alguns campos razoavelmente pesados ​​- na ordem de 500KB no máximo.

Isso funciona bem quando executado localmente, mas no Heroku, as solicitações para essa rota levam de 5 a 30 segundos para serem concluídas - e quase 100% do tempo é gasto no primeiro acesso ao request.form:

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

Isso é confirmado pelo rastreamento de solicitação lenta Newrelic também. Há alguns milésimos de segundo aqui ou ali para as operações do banco de dados e, em seguida, uma grande quantidade de tempo no código Python, aparentemente gasto aguardando algum i / o, já que o tempo de CPU informado é geralmente menor que um milissegundo.

Eu tenho sido totalmente incapaz de reproduzir isso em um ambiente local usando a mesma configuração de gunicorn / eventlet que estou usando na produção. Até mesmo o servidor WSGI de depuração integrado é muito rápido nessas solicitações.

Alguém tem alguma ideia do que pode estar errado? É um problema com o Flask, ou algo que eu só preciso entrar em contato com o suporte do Heroku?

questionAnswers(1)

yourAnswerToTheQuestion