2017-02-02 3 views
0

私は現在、herokuにデプロイされているアプリを持っています。Pythonフリスコheroku - 画像アップロードフィールド(WTForms)でAPPタイムアウトになります(長すぎます)

ライブは1日以来、私はユーザーが頻繁に特定のサイトでH13またはH28エラーが発生することをログに記録しました。

私はすでに問題を発見しました。このサイトでは、ユーザーは画像をアップロードできます(最大10件)。 私は複数の画像をアップロードするための唯一の方法は、一度にそれを行う唯一の方法は、マルチセレクトを許可する画像のための1入力フィールドを使用しています。

WTForms:

bild = FileField("Weitere Bilder hochladen", validators=[FileAllowed(['jpg', 'png', 'jpeg'], 'Nur Bilder im Formal JPG oder PNG')]) 

要求が処理されていない場合はHerokuのは、30秒のデフォルトのタイムアウトを持っています。しかし、複数の画像をアップロードするプロセスが長すぎるため、herokuはプロセスを中断し、カスタムエラーページを表示します。

私の考え:ユーザーは一つ一つの画像をアップロードすることがあるので、

が、私は複数選択を無効にし、WTFormsに9つのadditonal FileFieldsを追加することになり、これを解決するために、これは移動するための方法ですか?

また、進捗バーを追加してタイムアウトを増やす必要がありますが、ここでは何がベストプラクティスですか?

EDIT

わかりました私はいくつかの解決策を見つけましたが、私は、プログレスバーを使用し、Herokuのからの要求タイムアウトを増加したいと思います。

私は新しいprocfileアップロードしようとします

web: gunicorn main:app --timeout 120 

答えて

0

わかりました、私はこの問題を解決するために管理が、私はそれは速く、非常に効率的ではない作られています。

最善の解決策はここにあるように思わ: Heroku`s solution

私は私のアプリのために増加したタイムアウトでそれを解決しました。したがって、私はHerokuのアプリに新しいprocfileをアップロード:その後

web: gunicorn main:app --timeout 120 

を私は長い要求を行い、フォームの私の送信ボタンへのローディングアニメーションを実装します。私は追加の部分はspan tagである:

<button type="submit" class="btn add-btn"> <span class="ani-holder"><span class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></span></span> Zimmer einstellen </button> 

で初期状態私はアニメーションがdisplay: none;であることを確認します。ボタンをクリックすると、フォームが送信されます。ここで私はdisplay: inherit;に積載アニメーションの表示を変更すると、それは私もボタンの背景色を変更良く見えるようにjQueryのを使用します。

$('#regi').submit(function(){ 
    $('.ani-holder').css("display", "inherit"); 
    $('.add-room-container .add-btn').css("background-color", "#afddfe");   
}); 

フォームが要求を提出しながら、関数が実行されます。その後、私はredirect urlを読み込み、ページをリロードします。要求が速ければ何も見ません。

関連する問題