저는 헬레 쿠에서 이벤트 릿 (eventlet) 작업자와 함께 gunicorn을 사용하여 Flask 앱을 실행하고 있습니다. 내 응용 프로그램의 특정 경로는 자주 500KB의 순서로 상당히 복잡한 구역이있는 POST 데이터 (x-www-form-urlencoded)를 자주 수신합니다.Heroku에서 Flask : request.form은 큰 POST 데이터로 인해 속도가 매우 느립니까?
로컬에서 실행할 때 제대로 작동하지만 Heroku에서는 해당 경로에 대한 요청이 완료되기까지 5 ~ 30 초가 소요되며 요청 시간의 거의 100 %가 첫 번째 액세스에 소요됩니다.
t = time.time()
action = str(request.form['action'])
dt = time.time() - t # Often 10 seconds or more!
이것은 Newrelic의 느린 요청 추적에서도 확인됩니다. 데이터베이스 연산에 몇 밀리 초가 있고, Python 코드에서 거대한 시간대가 있습니다.보고 된 CPU 시간이 보통 1 밀리 초보다 짧기 때문에 일부 I/O를 기다리는 데 걸리는 것으로 보입니다.
프로덕션 환경에서 사용하는 것과 동일한 gunicorn/eventlet 설정을 사용하여 로컬 환경에서이를 재현 할 수 없었습니다. 내장 된 디버그 WSGI 서버조차도 이러한 요청에 번개 같이 빠릅니다.
아무도 어떤 문제가 생길지 모르는 사람이 있습니까? 그것은 플라스크, 또는 그냥 Heroku 지원에 연락해야 할 일이 문제가 있습니까?
dotcloud의 무료 샌드 박스에 앱을 올리려고 했습니까? 나는 최근에 작은 술병 응용 프로그램을 위해 그것을 사용했고, 그것은 죽었습니다. 어쩌면 거기 또는 어딘가에 Heroku 또는 Flask 또는 귀하의 응용 프로그램과 문제를 분리 수있는 당신의 애플 리케이션을 테스트 할 수 있습니까? –
두 번째 @AllanAnderson - 다른 공급 업체에서도 비슷한 설정을 시도하십시오. 동일한 방식으로 문제가 발생하면 예제 데이터를 제공 할 수 있습니까? –
* "거의 100 %의 시간이 request.form에 처음 액세스하는 데 소비됩니다."* dyno 공회전의 영향을받을 가능성이 있습니까? https://devcenter.heroku.com/articles/dynos#dyno-idling – Dominic