私は、イベントハンドラーを使用してgunicornを使用してHerokuにFlaskアプリを実行しています。私のアプリの特定のルートは、たいてい500KBのオーダーの、かなりチャンクなフィールドを持つPOSTデータ(x-www-form-urlencoded)を頻繁に受信します。HeraskのFlask:request.formのPOSTデータが非常に遅いですか?
これはローカルで実行しても正常に動作しますが、Herokuではそのルートへのリクエストには5〜30秒かかるため、request.formへの最初のアクセスに費やされる時間はほぼ100%です。
t = time.time()
action = str(request.form['action'])
dt = time.time() - t # Often 10 seconds or more!
これは、Newrelicの低速要求トレースによっても確認されています。報告されたCPU時間は通常1ミリ秒以下であるため、ここではデータベースの操作に数ミリ秒、Pythonコードではかなりの時間がかかります。
私は現場環境でこれを生産する際に使用しているのと同じgunicorn/eventlet設定を使用して完全に再現することができませんでした。組み込みのデバッグWSGIサーバーであっても、これらの要求に対しては驚異的です。
誰も何が間違っているかもしれないという考えを持っていますか?それはフラスコ、または私がただHerokuのサポートに連絡する必要がある何かの問題ですか?
dotcloudの無料サンドボックスにアプリを置こうとしましたか?私は最近、小さなフラスコのアプリのためにそれを使用し、それは死んでいた単純だった。たぶんあなたのアプリをどこかでテストして、HerokuやFlaskやアプリで問題を特定できるかどうかを確認してください。 –
私は2番目の@AllanAnderson - 別のベンダーで同様の設定を試してください。同じ方法で問題が発生する場合は、サンプルデータを提供できますか? –
* "request.formへの最初のアクセスでは、ほぼ100%の時間が費やされています" *ダイノーアイドリングの影響を受けている可能性はありますか? https://devcenter.heroku.com/articles/dynos#dyno-idling – Dominic