Kolba na Heroku: request.form jest niesamowicie wolna z dużymi danymi POST?

Używam aplikacji Flask na Heroku, używając gunicorn z pracownikami eventletu. Konkretna trasa w mojej aplikacji często odbiera dane POST (x-www-form-urlencoded) z kilkoma dość grubymi polami - najwyżej 500 KB.

Działa to dobrze, gdy działa się lokalnie, ale na Heroku żądania do tej trasy trwają od 5 do 30 sekund - i prawie 100% czasu spędza się na pierwszym dostępie do request.form:

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

Potwierdza to również śledzenie powolnego żądania Newrelic. Jest tu kilka milisekund dla operacji na bazie danych, a następnie ogromny fragment czasu w kodzie Pythona, najwyraźniej spędzony na niektórych i / o, ponieważ raportowany czas procesora jest zwykle krótszy niż milisekunda.

Nie byłem w stanie odtworzyć tego w lokalnym środowisku, używając tej samej konfiguracji gunicorn / eventlet, której używam w produkcji. Nawet wbudowany serwer debugowania WSGI błyskawicznie reaguje na te żądania.

Czy ktoś ma jakiś pomysł, co może pójść źle? Czy to problem z Flask, czy coś, o czym muszę się skontaktować z pomocą Heroku?

questionAnswers(1)

yourAnswerToTheQuestion